{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- By: Ashutosh Singh\n",
    "- Email: singh.ashu@gmail.com\n",
    "- Reference: Advances in Financial Machine Learning, Marcos Lopez De Prado, pg 75\n",
    "\n",
    "\n",
    "# Fractionally Differentiated Features\n",
    "\n",
    "One of the challenges of quantitative analysis in finance is that price time series have trends or non-constant mean. This makes the time series non-stationary.  Non-stationary time series are hard to work with when we want to do inferential analysis such as average and variance of returns, or probability of loss.  Stationary series also help in supervised learning methods. Specifically, in supervised learning one needs to map hitherto unseen observations to a set of labeled examples and determine the label of the new observation.  As Marcos Lopez de Prado (MLdP) says in Chapter 5, “if the features are not stationary we cannot map the new observation to a large number of known examples”.  However, to make a time series (or a feature) stationary often requires data transformations like computing changes (change in price, yields or volatility).  These transformations also leave the time series bereft of any memory and thereby reducing or eliminating its predictive capability.  This chapter discusses ways to preserve as much memory as possible while transforming the series into a stationary time series. Or, proverbially “to have your cake and eat it too”.\n",
    "\n",
    "In this notebook we provide solutions to the exercies 5.1 through 5.6 and illustrate how fractionally differentiated series can be made stationary.  Exercises are particularly helpful in showing how to use fractionally differentaited series as a feature to train an algorithm.  Parts 5.6 (d) will be in a different notebook."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import scipy.stats as st\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from scipy.stats import jarque_bera\n",
    "from scipy.stats import linregress\n",
    "from scipy.optimize import curve_fit \n",
    "\n",
    "from statsmodels.tsa.stattools import adfuller\n",
    "from statsmodels.tsa.stattools import coint"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from mlfinlab.filters import filters\n",
    "from mlfinlab.labeling import labeling\n",
    "from mlfinlab.util import utils\n",
    "from mlfinlab.features import fracdiff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "adf = lambda s: adfuller(s, autolag='AIC')\n",
    "p_val = lambda s: adfuller(s, autolag='AIC')[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.1 Generate a time series from an IID Gaussian random process.  This is a memory-less, stationary process"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# generate 10000 IID random numbers \n",
    "nsample = 32768\n",
    "mu = 0\n",
    "sd = 1\n",
    "ts = np.random.normal(mu, sd, nsample)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'IID Series')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the numbers\n",
    "plt.plot(ts)\n",
    "plt.title('IID Series')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean: 0.0011, SD: 0.9956, Skewness: 0.0123, Kurtosis: -0.0136\n"
     ]
    }
   ],
   "source": [
    "# print various statistics of the time series\n",
    "print('Mean: {:.4f}, SD: {:.4f}, Skewness: {:.4f}, Kurtosis: {:.4f}'.format(np.mean(ts), np.std(ts), st.skew(ts), st.kurtosis(ts)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.1(a) Compute the ADF statistics on this series. What is the p-value?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(-180.65010522547405, 0.0, 0, 32767, {'1%': -3.430549585325409, '5%': -2.8616282115925373, '10%': -2.5668169522912225}, 92549.21523282514)\n"
     ]
    }
   ],
   "source": [
    "adf_test = adfuller(ts, autolag='AIC')\n",
    "print(adf_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The p-value is 0.0 and the abs(statistics) is very large compared to the critical value at 1% level, so we reject the null \n",
    "that there is a unit root*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.1 b: Compute the cumulative sum of the observations.  This is a non-stationary series with memory"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(-1.8081285628842634, 0.3764336208930048, 0, 32767, {'1%': -3.430549585325409, '5%': -2.8616282115925373, '10%': -2.5668169522912225}, 92545.96354422788)\n",
      "0.3764336208930048\n"
     ]
    }
   ],
   "source": [
    "cumsum_ts = np.cumsum(ts)\n",
    "print(adf(cumsum_ts))\n",
    "print(p_val(cumsum_ts))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The adfuller test shows that p-value (0.12) is not close to zero and the stat is not near the critical value of 1%.  Hence the series is not stationary as stated in the question.*  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.1.b.i Compute the order of integration of this cumulative series"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We know that I(0) is not stationary (see above) ... Let's check I(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# I(1)\n",
    "i1_series = np.ediff1d(cumsum_ts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-1.21533801, -0.27603693,  0.39522217,  1.42116852,  0.77997257,\n",
       "        0.21814338,  1.00442459,  1.28326557, -1.62133003,  0.98999368])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "i1_series[0:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(-180.6479318366841, 0.0, 0, 32766, {'1%': -3.430549591417119, '5%': -2.861628214284826, '10%': -2.56681695372426}, 92547.03751182239)\n"
     ]
    }
   ],
   "source": [
    "print(adf(i1_series))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The p-value is 0 indicating that the series is stationary*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.1 c: Differentiate the series twice. What is the p-value of this over-differentiated series?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "i2_series = np.ediff1d(i1_series)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-43.45992610868357,\n",
       " 0.0,\n",
       " 52,\n",
       " 32713,\n",
       " {'1%': -3.4305499148107343,\n",
       "  '5%': -2.8616283572116923,\n",
       "  '10%': -2.56681702980063},\n",
       " 93151.49039961581)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "adf(i2_series)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The p-value is 0.0 indicating that the series is stationary*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.2 Generate a time series that follows a sinosoidal function. This is a stationary series with memory "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fa63f0deb38>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAD8CAYAAABzTgP2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJztvXl0pFd55/95qrSrtKu0tNStVmvpbnW3u+2Wu20MxhivJGMTMMEGBjMBPDmBSQZ+J8EccsKEhIQk8xtI5kcWhyWGEDAYEhzwgjHGC95atnvvVmvpRVJrKe0q7VV1f3/UW+qS0F7bu9zPOXWkerd63u1+n/vce58rSik0Go1Go4ngSrUBGo1GozEXWhg0Go1GswgtDBqNRqNZhBYGjUaj0SxCC4NGo9FoFqGFQaPRaDSL0MKg0Wg0mkVoYdBoNBrNIrQwaDQajWYRaak2YDOUlpaq7du3p9oMjUajsRSvv/76oFLKu9Z2lhSG7du309LSkmozNBqNxlKIyMX1bKdDSRqNRqNZhBYGjUaj0SxCC4NGo9FoFqGFQaPRaDSL0MKg0Wg0mkXERRhE5BsiMiAiJ1dYLyLydyLSLiLHReSaqHX3i0ib8bk/HvZoNBqNZvPEq8bwL8Adq6y/E2gwPg8A/wAgIsXA54HDwCHg8yJSFCebNBqNRrMJ4jKOQSn1vIhsX2WTu4FvqfA8oq+ISKGIVAI3AU8rpYYBRORpwgLz3XjYFU9m5oP89HgvvWPTXL2tiLfUlSAiqTbLMVwamuKpU324XcJte8qpLspJtUmOQSnFc+d8nOwZY1tJLrfvKSczzZ1qsxzD2PQ8Pz3ey+j0HNfvKOHA1sKElz3JGuBWBXRFfe82lq20/NcQkQcI1zbYtm1bYqxcgdOXx/n4t1roGZ1eWHbL7nL+7r4D5GRYcoygZVBK8dDznfz1U60EQ+H5yf/qybP86V17uPdQcp8DJzIyOcfv/uvrvHp+eGFZY7mHf/qvzdSW5qbQMmfw3Dkf/+Pf3mB8JrCw7D8+cQMHthYm9Hct0/islHpIKdWslGr2etcc0R03Lg5Ncu9DLxNSiu987DCn/vR2Pveu3fzibD8PfOt1AsFQ0mxxIl9/8Tx/+cRZbt9TzksP3swLf/QODtUW8+CPTvDD17tTbZ6tmZkPcv83X+PNrlH+4rf2ceYLd/DPH25m0D/HB//5FfrHZ1Jtoq05cmGYjz18hC2F2fznJ9/KsT+5jS+/fz/7qwsS/tvJEoYeYGvU92pj2UrLTUEgGOIT//YGIsIjD1zPDfWl5Gam8fEbd/CX79nHi+2D/P0vO1Jtpm1589IIf/nEWe7cW8H/d981bCnMZmtxDl+7v5nrd5Twx/9xkk6fP9Vm2pa/fPwMx7vH+OoHruEDh7eRneHm1qZyvvU7hxiZmuePHj1OODqsiTfjM/N84jtvUF2UwyMPXM++6gIKctL5raurkxLCTpYwPAZ82OiddB0wppTqBZ4CbhORIqPR+TZjmSn49isXOdkzzl++Zx/bShbHtN9/7Tb+y/4t/N9ftHFpaCpFFtqXYEjxx/9xklJPBn99z1W4XFdehsw0N19+/wHS3cLnHzuVQivty6nLY3z7lYvcf30NtzaVL1q3t6qAz75rF8+d8/Gfx3tTZKG9+crTbfj8s3zl/QcoyElP+u/Hq7vqd4GXgZ0i0i0iHxWR3xWR3zU2eRzoBNqBfwZ+D8BodP4z4Ijx+UKkITrVTM4G+Ntn2nhbQyl37q1Ydps//o3dpLlc/PVTZ5Nsnf35yfHLnLo8zud+o4m8rF9/MSoKsviDWxp5oW2QF9p8KbDQ3vz5T85QmJPBp2/duez6Dx2uYXdlPn/z1FnmAjqcGk8uDk3y8MsXuPfabexPcFvCSsRFGJRS9ymlKpVS6UqpaqXU15VS/6iU+kdjvVJKfUIpVaeU2qeUaona9xtKqXrj88142BMPvvvaJUan5vnUrY0rVt3K87P4yA3b+emJXi4OTSbZQvsSCin+/tkOGso8/Oa+yhW3+9B129hSkMXfP6vDefHkaNcoL3cO8Xs31a3orbpcwh/dvpOu4Wl+cvxyki20N//8QiduET51S0PKbLBM43MymQuE+OcXOrl+RwnXbFt9WMVH3rKdNJfwjRfPJ8k6+/Ns6wCt/RP83jvqFoWQlpKZ5uYjN2zn5c4hTl0eS6KF9uah5zvIy0pbs9fXTTu91Jd5+NoL53VbQ5wY9M/yg5Zu3nNNFWX5WSmzQwvDMvzibD/947N8/MbaNbctz8/irv1VfL+lm4mZ+SRYZ3/+7dVLePMy+c2rtqy57fuv3UZOhptvvHgh8YY5gL6xGZ482ccHD9fgyVy9K7aI8Ds31HK6d3xRd1bN5nnkSBezgRAfe9uOlNqhhWEZHjnSRXl+Jjc2rK9b7Aev28b0fJAnTvQl2DL70zc2w7OtA7zvYDXp7rUfz4LsdO4+UMXjJ3qZnA2sub1mdX70ZjchBfcd2rr2xsBvXV2FJzONH7TorsOxopTih693c2h7MfVlnpTaooVhCX1jMzx3zsc9B6tJW0fBBHD11kJ2lObywzf0yxErP3wjXDD9dvP6CiaA915TxfR8kCdPamGOBaUUjxoFU03J+gavZWe4ede+Cp482cv0XDDBFtqbNy6N0jk4yT0Hq1NtihaGpTx+opeQgvdes/6bIyK855oqXj0/TNew7roaCz853svBmiK2b2BU7cGaIrYV5/CjN7Uwx8Lx7jE6fZO89+CyyQdW5LeurmZyLsjPTmthjoV/f7Ob7HQ377pq5Q4XyUILwxKePNXHroo8dng3VpW7a3/4ZXrqlH45NsvFoUnO9I6v2D14JUSEuw9s4eWOIYYn5xJknf158lQfaS7hjj0bK5gO1xZTWZDFfx7TYxo2Syik+Nmpft6xy7tm204y0MIQhW9iliMXhrl9z8YKJoBtJTnsqsjjZ6f7E2CZM3jCCAXdsUFhALitqYKQgmfO6Ou/WX52qo/rdpRseECVyyXc2lTOi+0+ZuZ1OGkzHO0eZWBiltuaNv7sJwItDFH8/Ew/Sm2uYAK4ramclgvD2mvdJE+e7GNfVcGmMqfurcqnsiCLp7Uwb4r2AT8dvklu21O+9sbLcMvucmbmQ7zYNhhny5zBU0Zt7R27ylJtCqCFYRFPnuyjxvD8N8Othtf6i7MDcbbM/vSPz3C0a3TToiwi3LK7nBfaBrXXugki7QO37N6cMFy3owRPZho/1zW2DaNUOIx0fV0JBdnJT3+xHFoYDGbmg7zSOcTNu8o2naTqiteq2xk2yvPnwmktbo7BY7qlqZzp+SC/atde60Z55swA+6oK2FKYvan9M9JcvH2nl5+fGSAU0oPdNsL5wUnOD05yW9PmRDkRaGEwOHJhmNlAiBsbN5/SW0S4aWcZL7UP6XTcG+T5tkG8eZmbrq0BXLejmOx0N8+d07mTNsL4zDxHu0a5aWds6exv2V3GoH+WU5fH42SZM3jRcGRiKXvijRYGgxfaBslwuzhcWxzTcd5aX8rEbIDjPTpFw3oJhRQvtvl4W0NpTCmFM9PcHKot1jWGDfJKxxDBkOKG+tKYjnNDXXj/X3Xo678RXmgbZGtx9rrHjiQDLQwGL7QNcrCmKOYZ2a6vK0EEfqUb4dbNqcvjjEzNr3uk+Wq8tb6UDt8kvWPTa2+sAeBX7YNkp7u5eltsmTzL8rNoLPdoYd4AgWCIVzqGeGuMohxvtDAAAxMznOkd522Nsd+c4twMmirzF6qHmrV53kibHavHGn2MX7UPxXwsp/Bi+yCHdxTHZR7nt9SVGmFZ3QFgPRzrHmViNsBb680TRgItDAC83BEuRN4Wp5vz1vpS3rg0wtSczt2zHl7uGGJXRR7evMyYj7WrIo/i3Axe0sK8LnrHpunwTcbNY72hvpSZ+RBvXByNy/HszottQ4jAW+pKUm3KIuI1Uc8dItIqIu0i8uAy678sIkeNzzkRGY1aF4xa91g87NkoRy4M48lMo2lLflyOd0N9KfNBxZELI3E5np0JBEO8cWkk5radCC6X8Ja6El5sH9SpoNfBK51hp+gtdfERhsM7inEJvKTbGdbFq+eH2F2RT1FuRqpNWUTMwiAibuCrwJ1AE3CfiDRFb6OU+pRS6oBS6gDwf4EfRa2ejqxTSt0Vqz2b4cj5Ea6pKcK9Su7/jXDQOFbLBZ2KeC1O944zNRekeXt8hAHg8I4SBiZm6RrW7QxrceTCCHlZaeyMoTdYNPlZ6eyrKtBpuNfBfDDEm5dGORQnpyiexKPGcAhoV0p1KqXmgO8Bd6+y/X3Ad+Pwu3FhbGqe1v4Jrq1ZfUKejZCbmcbuyjxadI1hTV4zCpBr4ygMzca9bLmoC6e1eP3CCNdsi59TBHCwpphjXaPM6y7bq3L68jjT80Gat8ev7IkX8RCGKqAr6nu3sezXEJEaoBb4RdTiLBFpEZFXROTdcbBnQ7x+ySiY4qzazTXFHNUvx5ocuTDM1uJsKgriN1tVY3keeZlptFzUwrwaC05RnAumgzVFzAZCejzDGhwxIgrNNfasMWyEe4FHlVLRXRZqlFLNwAeAr4hI3XI7isgDhoC0+HzxG8D02vkR0t3CgThPun2wpojp+SBnevXLsRJKKVoujMS1tgDgdglX1xTxuq6xrUrEKToY54Ip4gHrUOrqvH5xhOqi+DpF8SIewtADRM+qUm0sW457WRJGUkr1GH87gV8CVy+3o1LqIaVUs1Kq2euNX9eulgvD7KsqICs99q560Vx5OXThtBKdg5MMTc5xKM7CAHBwWxHnBiYYm9bTra5Ey4UR0lzxd4rK87OoLsrmjUv62V8JpcKdU+LtFMWLeAjDEaBBRGpFJINw4f9rvYtEZBdQBLwctaxIRDKN/0uBG4DTcbBpXczMBznePRb3MBJAZUE2VYXZvK7DGSsS8Sjj2fAcoXl7EUrBm7pwWpGWCyPsqSogOyO+ThGE23laLozonmErcHFoikH/rCnbFyAOwqCUCgCfBJ4CzgDfV0qdEpEviEh0L6N7ge+pxU/KbqBFRI4BzwJfUkolTRhOXR5jLhji4LbE3JyDNUW0XBzWL8cKvHlplILsdOq88U8FcGBrIW6XaGFegblAiGPdo3HtdBHNwZoiBiZm6R7RPcOWI9L+ZdYaQ1ymClJKPQ48vmTZnyz5/r+W2e8lYF88bNgMx7rC+Yz2x7kqHaF5exGPHbtMz+j0puYYsDvHuse4qrogpvxIK6F7hq3Omd5xZgMhrkmYMIQLvJaLw2wt1s/+Uo52jZCXmUb9BmeKTBaOHvl8vHuU8vxMyvMT0/gTid0e79YJ9ZYyPRfkXP8E+6sTI8oQvv4nesZ0GuhliCR5vKq6ICHH31mRR06Ge8H50izmRPcYe6sKcMWxm3A8cbgwjHFVAgumnRV5pLtFC8MynO4dIxhSCSuYAK6qLsQ/G+D80GTCfsOqHO8apSQ3g6pNzr+wFm6XsHdLAce7dWqMpcwFQpzpnUjosx8rjhWGsel5Ogcn2Z/Am5OZ5mZXRb5+OZbhaILDeHDFGz6hhfnXONEzxr4EhfEi7Ksu4NTlcT03yRJa+yaYC4YS6pTGimOF4dRCVTqxN+eq6gIdzliGRIfxAOq9HrLT3RzTwryISBjvqqrEeqxXVRcwGwjRNuBP6O9YjeM94edR1xhMyLHuxMZYI1xVXcDETIALOpyxiESH8QDS3C72bMnXNYYlnLo8Rkgl3inaV6VrbMtxvGuMopx0qosSE8aLB44VhuPdo9SU5FCYk9ishpGX74Se0W2Bsel5zg9Oxn1g1XLocMavE2nz2pdgp2h7SS55WWm6xraE4z1j7KsuTGgYL1YcLAyJ91gBGso8ZKW7dO+MKE4kqbYGsL+6kOn5IB0+XWOLcKJnLOFhPAinQN9XVaCdoiiSFcaLFUcKw6B/lp7R6YQ2PEcIhzMKONGjvaYIEQ/yqqrk1BgA3QEgimPdo+xLwrWH8PUPj5nQM7pBOM18onvjxQNHCkPEY92XJNXeV1XAyZ7wA6GBkz1jbCvOoSAnPeG/VVuSS15mmu4ybDAxM0+nL7G98aK5qqqQ+aCitW8iKb9ndiIOipl7JIFDheG0kfE0XjO2rUXTlnym54O6AdrgTO84TZXJufYul7B7S/7CPXc6kVTYe5MkDHurwvf5tE7BDcDJnnFKPZmmzKgajWOFYWtxNnlZifdYgYVCUKfghsnZABeHp5ImyhC+/md7x3WXYa4U0HuSdP23FuWQm+HWwmxwpnc8qc/+ZnGkMJzpHWd3RfJuTkO5hzSXaK8JONs3gVKwO0k1BoDdlXlMzgW5NDyVtN80K2f7xinJzcDryUzK77lcwu7KfO0UEZ7Ks33Az+7K+EyjmkgcJwzTc0EuDE4mtWDKTHNT5/Xol4MrYbxkvhxNleGwib7+cKZ3gt2V+UntKhkWhgnH19g6fH7mgqGkhVFjwXHC0No/QSjJHiuE2xl0dTpcOOdnpSUsR89yNJR7cLvE8cIQCIZo7Z9Iuse6uzIf/2zA8Sm4zyw4RVoYTEeyY6wRdlfm0T8+y5B/Nqm/azbO9I4n3WPNSnezozTX8cJ8fnCSuUAo6QVTRIicfv3P9E6Q4XZRWxr/+UfijeOE4UzvOHmZaUkfjn4lnOHcbnvBkOKsEcpINk1b8h197QHOGF1GdyWxfQ3CWYZFdCjvTO84DeUe0t3mL3bjYqGI3CEirSLSLiIPLrP+IyLiE5GjxudjUevuF5E243N/POxZjTO94+yqzEv6cPSI1+Tkl+Pi0CTT88GUxFh3V+bTMzrN6NRc0n/bLJzpHSfdLdSXJXdymJyMNGpLcx397MOV2rIViFkYRMQNfBW4E2gC7hORpmU2fUQpdcD4fM3Ytxj4PHAYOAR8XkQSNglqKKQ425caj7XEk0l5fqajq9MRjz0V3fV2L3QZdm6t4UzvOHVeDxlpyfdYd1c6u41tYGKGQf+cc4SBcIHerpTqVErNAd8D7l7nvrcDTyulhpVSI8DTwB1xsGlZukam8M8GUnZznN5t70zvOG5X8j1W0GNJAM72TqSsR0xTZT7dI9OMz8yn5PdTzVnDIbFCV1WIjzBUAV1R37uNZUt5r4gcF5FHRWTrBveNC6nuFbC7Mp/2Ab9j88ac7h2nzptLVro76b/tzcuk1OPcGtvI5Bx94zPsSlHBFCkQzzq0xhYpe6zQVRWS1/j8n8B2pdRVhGsFD2/0ACLygIi0iEiLz+fblBGneydwCewsT83Lsasij0BI0THgzNQYqY6x7q7M42yfM4XBDE4RwOnLzsxZdaZ3nMqCrISn+Y8X8RCGHmBr1PdqY9kCSqkhpVSkn+bXgIPr3TfqGA8ppZqVUs1er3dThp7pHae2NJfsjOR7rBDunQHQNuA8r2lsap7esZmUCkNjeR7tA35HJjOM9EhK1fWvyM8iPyuNcw6dze1M7wS7KqwRRoL4CMMRoEFEakUkA7gXeCx6AxGpjPp6F3DG+P8p4DYRKTIanW8zliWE327eyidvrk/U4dektjQXt0s41+88YWj3hc+5IQXtCxF2lucxMx+iy4GpMc70ji+E01KBiNBYnkebA5/9uUCIDp/fMg3PAGmxHkApFRCRTxIu0N3AN5RSp0TkC0CLUuox4PdF5C4gAAwDHzH2HRaRPyMsLgBfUEoNx2rTStzaVJ6oQ6+LzDQ3taW5tPY5z2uKhM/qvKkThoby8G+f659guwUGGcWTtgE/jeWpu/YADeV5PH6iF6WUqWcvizcXhyYJhNTC82cF4tLGoJR6XCnVqJSqU0p90Vj2J4YooJT6rFJqj1Jqv1LqHUqps1H7fkMpVW98vhkPe8xMY7nHkaGkdp+fjDQXW4tzUmZDQ3kklOcsYVZK0THgpz6Fogyws9zD2PQ8vglnjf5vN563eq+zQkmaDdBYnsel4Smm55zVM6l9wM8OI5SWKjyZ4RxNTps0pn98Fv9sICXdhKNpNIS51WHhpIgw7PBap5aqhSHJNJbnodSVh8UpdPj8KQ0jRWgs9ziujafDF37WUn39IzW2c/3Oe/a3FGSRmxlz5D5paGFIMo0LL4dzCqeZ+SBdw1PUpdhjhfD17/RNEgiGUm1K0lgIZaT4+pd6MijOzXBcA3S7z2+KZ38jaGFIMttLcshwuxwlDOcHJwmp1BdMEPZa54IhLjqoZ1KHz09eVhrevNT0SIogIjSUeRwVSgoZ45bM8OxvBC0MSSbN7WKHN9dRwnCl8S31L0dkcOM5B7UztA+Ew3hm6AnUWJ5He78fpZwxlqR3fIbp+WDKw3gbRQtDCmgsz3NUnLXD50fEHI1v9WUeRJwV524f8JvGY22syGNiNkDv2EyqTUkKZgnjbRQtDCmgsdxDz+g0/tlAqk1JCu0DfqqLslOSI2kp2RluthblcM4hXYbHZ+YZmJg1jcfaWHZlLIkT6NDCoFkvkQZopzTCtZugD300jeV5jgklma1gclrni3afn4LsdEpyrZEjKYIWhhTgpJcjGFKcH5w0jccK4RpbZJpLu9PhC484N4swFOVmUOrJdEwoLxLGM0P7zkbQwpACthbnkJXucsTL0TMyzWwgZJqCCcLCHAgpLgzZP8tt+4CfDLeLrUmeynY1dlZ4HFNb7vT5qTNB29pG0cKQAiKT1TihxhBJnmc2YQAcMQK6fcDP9tIc0kw0z3BDWR5tA35CNs9yOzo1x6B/zlTP/noxz9PiMBrL8mhzQI3BDMnzlrLDm4tLnNHG02mSEefRNJbnMTUXpGd0OtWmJBSr9kgCLQwpo67MQ9/4jO17JrUP+CnJzaDIRI1vWeluthXnLMTf7cpcIDyQz2wFUyTLaLvP3o6RWVKRbAYtDCki8rB02vzlMGs6gDqvx/b5qi4OTRIMKdMJQ6SHWofNr3/7QDijcHVR6jIKbxYtDCmivizcIGXnwkkpZarBVdHUl4V7Jtl5NrfIs2U2j7UoN5wzqcPmTlGHbzLlGYU3ixaGFFFTkkuaS2z9cgxNzjE2PW+6ggnCheVc0N6zuZk53XOdN9fWThEYqUhM6BSth7gIg4jcISKtItIuIg8us/7TInJaRI6LyDMiUhO1LigiR43PY0v3tSvpbhfbSnJs/XKYufEt8sLaWZg7fH6qCrPJyTBfuuf6Mo+t23hm5oN0jUyZamDnRohZGETEDXwVuBNoAu4TkaYlm70JNCulrgIeBf46at20UuqA8bkrVnusRL3X3i+HmYUh8sLaWphN2r4D4Rrb8OQcw5NzqTYlIZwfnESZJKPwZohHjeEQ0K6U6lRKzQHfA+6O3kAp9axSKlJnfwWojsPvWp66Mg8XBieZt+ncAB0+P9npbirzs1Jtyq9RkJNOqSfTtjWGhXTPJvVY7V5jM2v7znqJhzBUAV1R37uNZSvxUeCJqO9ZItIiIq+IyLtX2klEHjC2a/H5fLFZbBLqvR4CIcUlm8a5wzHWXFwmbXyzc5x7Id1zmfnaF8D+PZPaB8yTUXgzJLXxWUQ+BDQDfxO1uEYp1Qx8APiKiNQtt69S6iGlVLNSqtnr9SbB2sQT8ZrsWjiZYQL61YjEue04N4CZ5sBYjqrCbDLTXPZ99n3mySi8GeIhDD3A1qjv1cayRYjILcDngLuUUrOR5UqpHuNvJ/BL4Oo42GQJIjlU7FidnpwNcHlsxtQx1jqvh7HpeQb99otzRzxxs7YxuFzCDq/Hls8+mC+j8EaJhzAcARpEpFZEMoB7gUW9i0TkauCfCIvCQNTyIhHJNP4vBW4ATsfBJkuQl5VOeX6mLb2mTp/5UmEsxc5x7nafn8Icc6d7rvPm2nL0cySjsJmdorWIWRiUUgHgk8BTwBng+0qpUyLyBRGJ9DL6G8AD/GBJt9TdQIuIHAOeBb6klHKMMIB9u+2ZMXneUurtLAyGx2rmdM/1ZR66R6aZmQ+m2pS4EskobGanaC3i0sFZKfU48PiSZX8S9f8tK+z3ErAvHjZYlTqvhx+90YNSytQv8UbpGJjE7RJqSszb+FaZn0V2utumNTY/79xVnmozVqXO60GpcNfO3ZX5qTYnbljBKVoLPfI5xdSXefDPBhiYmF17YwvRPuCnpjiHjDTzPmIul1BXlmu7GptV0j3X27TzhRkzCm8U8761DqHOpt32zDy4Kpo6r8d2134hq6dJu6pGqC3NRcR+oTwzZhTeKFoYUsyC12Sjl2M+GOKCRRrf6r0eekanmZqzT/rzK11V81JsyepkpbvZWmS/tDBWcYpWQwtDiinLy8STmWYrr/XS8BSBkLJEVTryAnfaKJzUPuAnM81FlYmm81yJOq+9Qnlmzii8EbQwpBgRoa7MY6sag5lzJC3Fjj2TOnyT1Fok3XN9mYdOn32m+TRzRuGNoIXBBNR5cxcarOzAlTwx5o5xA9SU5OASezWAWsljrfN6mA2EbDPNZ4eFnKLV0MJgAuqNaT4nZuZTbUpc6PD5qcjPIi8rPdWmrElmmpuaklzb1Bgi6Z6t4rHW2ayNrd1nHadoNbQwmIAr03zao9bQYSTPswp2SqZntXTPdkum1z4Qzii8pcD87TuroYXBBNipP7dSig6fedM9L0c4/fkUARukP7dS+w7Yb5rPDt+kqTMKrxctDCZgW3EO6W6xRXW6f3wW/2zAMgUTRE3zOWL9OHeHL5zuubbUOjW2eq/HFk4RGLVlCzlFK6GFwQSku13UlOTSaQNhsOIEJXYaZNg+4GdrUY6l0j3bZfT51FyAntFpS9WWV0ILg0mwS3/u9gHr5YlZiHPbQJg7fJOWa/i0yzSfkTZCKz37K6GFwSTUeT1cHLL+NJ8dvknystLw5mWm2pR1Y5dpPoMhRafPOl1VI1wZZGjt699u8jkwNoIWBpNQ5/UwH1R0WXyaz0gfeqtlirVDjS2S7tlqwmCXGluHz4/bJWw3cUbh9aKFwSTYZZrPdp81G9/qysINoFae5nMheZ7Frv8WY5pPqwuzFTIKr5e4nIGI3CEirSLSLiIPLrM+U0QeMda/KiLbo9Z91ljeKiK3x8MeK7JjYZpP674cY9Pz+CZmLeexwpVpPq0c57Ziwz+A2yXUluZavvG/fcDPDotd+5WIWRhExA18FbgTaALuE5GmJZt9FBhRStUDXwZO8ymjAAAgAElEQVT+yti3ifBUoHuAO4C/N47nOPKz0inLs3acO2K7FXtlRBpsrVxj6/BZN92z1fOFBYIhLgxZI6PweohHjeEQ0K6U6lRKzQHfA+5ess3dwMPG/48C75RwEPpu4HtKqVml1Hmg3TieI6mz+OToVm58W+iyauEaW/uAddM913k9dA1PWXaaz0vDU8wHleV6hK1EPIShCuiK+t5tLFt2G2OO6DGgZJ37Oob6svCkMVaNc3cM+Mlwu9hqgXTPS6kqzCYr3WVZYVZK0W7BHkkR6ry5hBRcHLJm54sOG3VVBQs1PovIAyLSIiItPp8v1eYkhDpvLuMzAQb91oxzd/j81Jbmkua2zGO1gMsl7Ci1bo1teHKO0Snrpnu2evpzK9eWlyMeb3APsDXqe7WxbNltRCQNKACG1rkvAEqph5RSzUqpZq/XGwezzUedDV4OKyXPW0pdmXWFwWo5kpayo9Tao8/bB/yU5WWSb4GMwushHsJwBGgQkVoRySDcmPzYkm0eA+43/r8H+IUKx0seA+41ei3VAg3Aa3GwyZLUWbg/98x8kEvDU5ZseI5Q582le2TaknFuq6d7zs5wU1WYbclnH8LvrFVFeTliFgajzeCTwFPAGeD7SqlTIvIFEbnL2OzrQImItAOfBh409j0FfB84DTwJfEIpZb23Mk5U5GeRk+G2ZM+Yi0NThJS1q9J1Xg9KhVNXW42OgUnLp3sO19isd+2VUnRYaHKk9ZAWj4MopR4HHl+y7E+i/p8B3rfCvl8EvhgPO6yOyyXssOgIXKuHMmBxjW13ZX6KrdkY4QnorZ3uuc6byyMXhgmFlKXOY2BilonZgGXbd5bDeq2ENqfO67FknLV9IJzuORIrtiK1pbmIYMlpVu2Q7rnO62FqLkjf+EyqTdkQdpnOMxotDCajzuuhZ3Sa6TlrRdTafX6qCrPJzrDu+MRInNtqA63sku7Zqm1skedFC4MmYSxM8zlorZfDLjFWK9bYIumerdy+A1FdVi12/TsG/Hgy0yizUEbhtdDCYDKu9Oe2TjgjFFJ0Dlo/lAHh69856CcUss4gww6beKylngzys9Is9exDpH3HehmFV0MLg8moKcnBJdbymnpGp5mZt1665+Wo83qYmQ9xecw603y2D4TTPdeU5KTalJgQEUuOJWkf8Fu2m/BKaGEwGVnpbrYW51jq5bBTjLXOglluO3x+thXnkJlm3fadCHUWm/95Ymae/nFrZhReDS0MJiScTM9CBVOkV4YNQkl1Foxzt9ugR1KEOq+HgYlZxmfmU23KuljIkWST6x9BC4MJqfPm0unzE7RInLt9wE+xRdM9L6UkN4OC7HTL1NgCwRDnByctnYokmkiNrdMijpHdciRF0MJgQuq8HmYDIS6PWiPO3eHz28ZjEhFjmk9rCEPXyDTzQWWb62+1GluHz0+6W6gptnb7zlK0MJiQhWk+LVI4WXkegOUIx7mt5bHaJca9rTiHdLdYRpjbB/xsL7FmRuHVsNfZ2ISFgT4W8JqG/LOMTM3bqldGXZmHQf8sY1Pmj3MvzPNsE2FId7uoKbFOja3DonOcr4UWBhNSnJtBUU66JRqg7TZBCVxpSOywwCBDu6V7BoxQnvmf/blAiItDU7Z69iNoYTAp9Rbpz223UAZYK85tpx5JEeq8Hi4MTjIfDKXalFW5ODRJMKRs0/AfjRYGk1Ln9dBpEWGwerrnpWwtyjbi3Ob2WpVStpsHAMLPfiCkuDRs7mk+F0ace/NSbEn80cJgUuq8Hgb9c4xOmXuaz3afnx1ea6d7Xkqa28V2C8S5fROzTMwE7CcMFqmxRWrLO2zUvhZBC4NJiVRPzV442SV53lLCgwzNfe2vzNpmr+u/wyKjz9sH/GwpyCI3My7T2piKmIRBRIpF5GkRaTP+Fi2zzQEReVlETonIcRF5f9S6fxGR8yJy1PgciMUeO3GlZ5J5X45Iume7FUwQFuZLQ1OmjnPbcR4AgPysdMrzMy0hzPXl9gsjQew1hgeBZ5RSDcAzxvelTAEfVkrtAe4AviIihVHr/1ApdcD4HI3RHttQXZRDhttl6pcjIloNNiuY4Eqc++KQeePcbQN+8jLTKM+3T7rnCGavsYVCio6BSdsMLFxKrMJwN/Cw8f/DwLuXbqCUOqeUajP+vwwMAN4Yf9f2uF1Cbam549ztvgkAGsrt93JEakFmTujW1m+/dM8RIsn0lDJnWpie0Wmm54O2q61FiFUYypVSvcb/fUD5ahuLyCEgA+iIWvxFI8T0ZRGxn+sTA3Vl5u7P3dbvJ80l1JTYr/FtoQHU1MLst2VtDcJjGSZmAvj8s6k2ZVki7Tt2dIpgHcIgIj8XkZPLfO6O3k6FpX1FeReRSuDbwH9TSkUCt58FdgHXAsXAZ1bZ/wERaRGRFp/Pt/aZ2YA6r4dLw1PMBsw5zWf7gJ/tpbmk2ywdAIAnM42K/CzTCsPY1Dy+Cfule45wpWeSOR2j9n77ZBRejjXfaKXULUqpvct8fgz0GwV+pOAfWO4YIpIP/BT4nFLqlahj96ows8A3gUOr2PGQUqpZKdXs9TojElVf5iEYUlwyaZy7fcA+yfOWw8w1NjuH8cD88z+3D/gp9dgjo/ByxOrqPQbcb/x/P/DjpRuISAbw78C3lFKPLlkXERUh3D5xMkZ7bIWZX47ZQJCLw1O2LZjAGGRo0jh3W799B1cBVORnkZPhNuWzD9A2MGHL3ngRYhWGLwG3ikgbcIvxHRFpFpGvGdv8NnAj8JFluqV+R0ROACeAUuDPY7THVtSWhmP3ZmwAvTA4RTCkbBvKgLAwTMwG8E2YL87dPuAnK91FVZF9RpxH43IJO0yaM0kpRfuA39ZOUUwjM5RSQ8A7l1neAnzM+P9fgX9dYf+bY/l9u5ObmcaWgixTvhxtA+FQht2FAcINjWX5WSm2ZjFtA352lHpw22jE+VLqvR6OXBhJtRm/hm9ilvGZgK3DqPZrNbQZZp0cvX3Aj4j9Rt1Gc2X0ufmE2e4eK4SfrZ7RaabmAqk2ZRGRGnyDTQe3gRYG01Pn9dBhwjh324CfrUU5ZKVbfwL6lajIzyI3w226nD2Ts+ER53b2WOFKzySzTfPZZtMR59FoYTA5dd5cJueC9I+bK87dMWDfPvQRRMSUNbZIQemEGgOYr/NF+4CfvKw0yvLsO+xKC4PJMePLEQiG6PRN2tpjihCpsZkJJ7TvANSU5OAS84Xy2gYmqLfpiPMIWhhMzsL8zyYqnC4NTzEXDNm+YIJwje3y2AyTs+aJc7cP2HfEeTRZ6W62FueYyikCaB+YtH1tWQuDySnLyyQvK23BSzQDdpy1bSXMWGNrs/GI86WYrcY2OjXHoN++I84j2P/Jsjgiws7yPM71m+flcELjW4TGinDPEzNdfye070RoLM+j02eeaT6d4hRpYbAADeV5nOufME3PpI4BP5UFWeTZaAL6lagpziEjzcW5fnPU2GYDQS4MOaN9B2BnhYe5YIiLQ+ZoZ4g4RQ1l9u2qCloYLMHOcg+jRtI0M9Bm01nbliPN7aLe66G1zxzCcH5wkpCyv8caodEYK9DaZ44a28KI80J7jjiPoIXBAkTCGa0m8FpDIXtOQL8aOyvyTFNjcEooI0Kd14NLzPHsw5UR53aa43w5tDBYgJ0LXlPqX47wSNSg7avS0TSW59E7NsPY9HyqTeFc3wQum484jyYr3c320lzOmeDZB2jtG2dXhf2ffS0MFqDEk0mpJ8MUXutZ4wXd6YCXI8LOinAh3GaS67+9NNfWI86XsrPcHDW20ak5+sdnF2rwdkYLg0VoNEnPpMgL2mjzUbfRLMS5TVA4tfZPOMJjjaahPI8LQ5PMzKd2wqpWBzlFWhgsQmN5Hm39E4RCqe2ZdLZvgqrCbEf0SIpQVZhNboY75eGMqbkAl4an2Fmen1I7ks3O8jxCKvWDPCOOgROEWQuDRWgsz2NyLkjP6HRK7XBKjDUaEaGxIi/lNYZz/X6UcobHGk0klJfqcFJr3wT5WeEpX+2OFgaLYIaXYy4QzpHktIIJwl5ra19qx5K09o0DzvBYo6kpySXD7Uq5MLf2TbCzIs/WOZIixCQMIlIsIk+LSJvxt2iF7YJRs7c9FrW8VkReFZF2EXnEmAZUswwNJohzd/j8BELKkcLQWJ7HyNQ8g/65lNlwtm+CrHQXW4tzUmZDKkh3u9jhTW3PJKUUrf0Tjnn2Y60xPAg8o5RqAJ4xvi/HtFLqgPG5K2r5XwFfVkrVAyPAR2O0x7bkZ6WzpSArpS9HpPFtV4WzYtxwJXyTyhrbuf4JGsvzbD1r20qEx5Kkro3h8tgMEzMBdjrk2Y9VGO4GHjb+fxh493p3lHB97Gbg0c3s70QaU/xynO2bIN0tC3NRO4lGE4wlae2bWBjT4jQay/PoGZ1mYiY1Y0nO9Tmn4RliF4ZypVSv8X8fUL7Cdlki0iIir4hIpPAvAUaVUpF8xt1A1Uo/JCIPGMdo8fl8MZptTRrL82j3+QmkKKFYa984O0o9ZKQ5r2mq1JNBcW7qxpIM+mcZ9M85JpSxlIggpsoxiozfaXTIwM4133AR+bmInFzmc3f0dircKrdSy1yNUqoZ+ADwFRGp26ihSqmHlFLNSqlmr9e70d1tQWN5HnOBEBeGplLy+5HGNyciIjSWe1ImDE4O40HqQ3mtfeNUFmRRkOOMbtppa22glLplpXUi0i8ilUqpXhGpBAZWOEaP8bdTRH4JXA38ECgUkTSj1lAN9GziHBxDpBp7tm886blyxmfmuTw241hhgLDX+ujr3YRCKum5cpw44jyayFiSVIXyzjrMKYo1JvAYcL/x//3Aj5duICJFIpJp/F8K3ACcNmoYzwL3rLa/5goN5R7SXMLpy+NJ/22nxViXo2lLPpNzQS4NJ7/G1to3TkluBl4bzzO8Gi6XsKsyPyXP/rwxla2T2ndiFYYvAbeKSBtwi/EdEWkWka8Z2+wGWkTkGGEh+JJS6rSx7jPAp0WknXCbw9djtMfWZKa5qS/zcLo3+S+H0z1WgKbKAgBOpaBwau2bWGgAdypNlfmc7h1P+uj/84OTzAVDjnr2YxIGpdSQUuqdSqkGpdQtSqlhY3mLUupjxv8vKaX2KaX2G3+/HrV/p1LqkFKqXin1PqWUOSYcMDFNW1LjNZ3pHScvK832eehXY6HG1juW1N8NBEOc7ZugaYsz2xciNG3Jxz8boGskuTW2U5fD93vPloKk/m4qcV73EovTVJnPwMRs0iftOXl5nD1b8h0x6nMlstKNGluShblzcJLZQIg9DheGyPkn+/qf6hknM81Fndc53bS1MFiMiNeSzHBSIBjibO+4ozymlYiEM5LJyZ6wx7q3ytnXPzK4L9nX/9TlcH6wNLdzikvnnKlNaKpMvtfU4Qt7rHurnO2xQjic0T8+y6A/eTW2U5fDHusOBw4sjCYr3U2915PUNh6lFKcuj9HkMKdIC4PFKMhJp6owO6lekxNjrCvRlIJwxqnLY+yuzHeUx7oSyW5j6x6ZZnwm4DinSD9pFqRpS/5CYZ0MTvaMk5WuPVaIqrElSZjDHuu449sXIuzZkk/f+AxDSaqxOdUp0sJgQfZsyef84CRTc4G1N44Dpy6PsatCe6wAhTkZ4RpbkrzWruFpJmYCjiuYViLZwnzq8jhulzhu/I5+0y1IU2U+Sl0ZW5BIQiHF6cvjjqtKr8buyuTV2CK/o69/mGSH8k5dHqfe63HUHNughcGS7DF6p0R6qySSrpEpJmYD7NUe6wJ7tuTTmaQa28nLY7hd4vjBbREiNbZkNUCfujzmyDCeFgYLsqUgi1JPBse6Ei8MJ3vCL6AOZVzhquoClLpybRLJqcvjNJQ5z2Ndjb1V+RzvHk347/gmZukfn3XkwEItDBZERNhfXcixJLwcpy6PkeYSGiuSm7TPzOzfWgjAsa7EXv8rDc9alKM5sLWIC0NTjE4ldjY9pzY8gxYGy7J/ayEdPj/jCZ645Hj3GI3leWSmaY81Qqknk+qibI4mWBh6x2bwTcxyVbXzCqbV2L81fD2OdSe2xny0axQR2OfA66+FwaLs31oYDmck8OUIhRTHuka5elthwn7DquzfWphwYXjzUvj4B7bq6x/NvqoCRODopcRe/6NdozSW5eHJXHN2AtuhhcGi7K9OvNfUOehnYjagC6ZlOFBdSM/odEJzVh3tGiEjzcXuSufFuFcjLyudhjJPQkOpSoWdIqc++1oYLEphTgbbS3ISGud+w/DIrt5WlLDfsCqRdoZENoIe7Rpl75Z8R06luhb7qws51jVKeFqX+HNxaIqRqXkOOLS2rJ84C7N/a2IboI92jZKXlaZHPC/D3qp8XJK4Buj5YIgTPWMc2KpFeTn2by1kaHKO7pHphBw/EibUNQaN5dhfXUjv2Az94zMJOf6bl8JV6WRPY2kFcjLSaCzP480ECUNr3wQz8yHHeqxrESmwE9XOc7RrlJwMt2PHj8QkDCJSLCJPi0ib8ffX3BsReYeIHI36zIjIu411/yIi56PWHYjFHqeRyG6TU3MBWvvGudqhHtN6uHpb4sIZEcHR1395dlbkkZnmSliN7c2uUfZVFeB2qFMUa43hQeAZpVQD8IzxfRFKqWeVUgeUUgeAm4Ep4GdRm/xhZL1S6miM9jiKPVvySXfLQltAPDnRPUZIoT3WVdhfXcj4TIDOwcm4H/vopVFKPRlUFzl3xrzVSHe72FtVkJAa22wgyJnL445+9mMVhruBh43/Hwbevcb29wBPKKWSP5u6DclKd7OvqoAjF4bjfuyI2Oyvdu7LsRbN28MV5JYEXP83L41wYGuho2fMW4uDNUWc6B5jZj4Y1+Oe6B5jLhjiGgd3uohVGMqVUr3G/31A+Rrb3wt8d8myL4rIcRH5sohkrrSjiDwgIi0i0uLz+WIw2V4cqi3hePco03PxfTleOz9EnTeXEs+Kt8Tx1Hk9lORm8Or5+ArDwMQMnYOTHKotjutx7cbh2mLmgqG4tzNE7ue12517/dcUBhH5uYicXOZzd/R2KhxoXTHYKiKVwD7gqajFnwV2AdcCxcBnVtpfKfWQUqpZKdXs9XrXMtsxHK4tZj6oeLNrJG7HDIYULRdGOLyjJG7HtCMiwqHaYl7tjK8wHDkfvpeHavX1X43mmmJEiPv1f+38MI3lHopzM+J6XCuxpjAopW5RSu1d5vNjoN8o8CMF/8Aqh/pt4N+VUgs5HJRSvSrMLPBN4FBsp+M8Dm4vQiT8MMeLM73jTMwGOKw91jU5VFtMz+g03SPxi46+dn6InAw3ex2YvG0jFOSks6sin9cuDMXtmIFgiNcvjji+thZrKOkx4H7j//uBH6+y7X0sCSNFiYoQbp84GaM9jiM/K52myvy4CsMrneEXzekvx3o4bHj18WznefX8MAdrivTESOvgcG0xr18cYS4QisvxzvRO4J8NOL62FuuT9yXgVhFpA24xviMizSLytchGIrId2Ao8t2T/74jICeAEUAr8eYz2OJJDtcW8cSl+L8dr54fZVpxDZYHuEbMWOyvyyM9Ki5swj07NcbZvQtfW1snh2mJm5kOc6IlPO8Or5w2nyMHtCxCjMCilhpRS71RKNRghp2FjeYtS6mNR211QSlUppUJL9r9ZKbXPCE19SCnlj8UepxJ5OeKRniEUUrx2YVjXFtaJ2yVcuz1+7QyRhk+ne6zrJfKcxqsDwCudQ9SU5FBRkBWX41kVXVe1AYdqSxCBF9sHYz7WyctjjE7N89b60jhY5gyu21FC5+Akl0djT8/wQpuP3Ay3Y1MxbJQSTyYNZR5eao+9nWEuEOLljiH97KOFwRYU52ZwVXUhz52LvRvvc60+ROBtDfrlWC9v3xnuJfd8jNdfKcVz53xcX1eqE+dtgBsbvbx2fjjmqVZfvzjC5FyQGxt1r0f99NmEtzd6OdY1yshkbLNaPXfOx94tBXr8wgZoKPOwpSCLX7bGJgwXhqboGp7m7Y1alDfCTTu9zAVDC50mNsvzbT7SXMJb6nQYTwuDTbhpp5eQii2cNDY9z5tdo7xde0wbQkR4+04vv2ofZD64+Q4Az7WGe3u/vbEsXqY5gkO1xWSnu2MW5ufP+bhmWxF5Welxssy6aGGwCfurCynITo8pnPRS+yDBkFoIjWjWz9sbvUzMBnjj4uYHGj7fNsj2khy2leTE0TL7k5nm5i11Jfyy1bfphIa+iVlOXR7Xz76BFgab4HYJNzZ6+WXrAMHQ5l6Op8/0k5+Vphs+N8EN9aWkuYRfnF1tjOfKTM4GeLF9kJt26trCZrhpp5dLw1ObTmj48zP9C8fRaGGwFXfurWDQP7fQF3sjzAVC/Px0P7c0lZOuB1ZtmLysdG6oL+Xxk72b8lqfbR1gLhDijr0VCbDO/tzaFL5ujx/vXWPL5XnyZB/binNo0tOoAloYbMU7dpaRne7m8RMbfzle7hxifCbAu/ZWJsAyZ/AbV1XSNTzN8U3Mw/3EyT5KPRmOTtwWCxUFWVy7vYifbEIYxqbnealjkDv3VuhstgZaGGxEdoabm3eX8eTJvg2Hk5440Utuhpu36m6qm+b2pgrS3cJPNyjM03NBnj07wK1NFY6dGCYe/OZVW2jtn6Ctf2JD+/38dD/zQcXtura2gBYGm/Eb+yrD4aQNdN2bngvy0+O93L6ngqx0dwKtszcFOem8rcHLT4/3EtqAMD95qpepuSB37d+SQOvsT9jjh//cYK3h0de7qSnJ0bPlRaGFwWa8Y2cZeVlpPNLSte59njzVy8RsgPc1b02gZc7g7gNb6Bmd5qWO9QvzD1q62Vaco/MjxUhZfhbX7yjhR290r7vG3DU8xcudQ9xzTbUOI0WhhcFmZGe4ee811Txxoo8h/+y69nnkSJcumOLE7XsqKMpJ5zuvXlzX9l3DU7zUMcT7Dlbj0mGkmPng4Rq6R6Z57tz6eof94PVuROC9B6sTbJm10MJgQz54eBtzwRDfb+lec9uTPWO80jnMvYe26oIpDmSlu/nt5q387HQ/fWMza27/9RfPk+4W7mnWBVM8uG1POd68TL798trCPD0X5F9fucg7dpaxpVBnEo5GC4MNaSjP4631pXz9xc4188f8w3MdeDLT+ODhmiRZZ38+dF34Wv7jcx2rbjc8Ocf3jlzi3QeqdIrzOJHudvGhwzU82+rjZM/qvcN+8HoXw5Nz/O7b65JknXXQwmBTPnVrA4P+Ob61iud0rn+CJ0708sHrtlGQrdMAxIutxTm872A1//bqpVUzrv7T8x3MzIf472/fkUTr7M9HbthOQXY6/+fpcytuMz0X5B9/2cE12wq5dntREq2zBjEJg4i8T0ROiUhIRJpX2e4OEWkVkXYReTBqea2IvGosf0REnDvJapw5WFPMTTu9fPUX7cuGNJRS/K/HTpGXlc5/v1F7TPHmkzfXA/DFx88su77T5+cbL57nvddUU1+Wl0zTbE9BdjoP3LiDX5wdWDFFzD8818HlsRk+c8cu3ei8DLHWGE4C7wGeX2kDEXEDXwXuBJqA+0SkyVj9V8CXlVL1wAjw0Rjt0UTx+f+yh7lgiD989BiBJcndvvbCeV7qGOIPb9/p6EnPE0V1UQ7/4+Z6fnq8l39/c3Fbz8x8kN//3ptkp7v5zJ07U2ShvfnoW2upL/Pw4A+PMzCx2DFquTDMV59t5+4DWzi8Q2dSXY5YZ3A7o5RqXWOzQ0C7UqpTKTUHfA+425jn+WbgUWO7hwnP+6yJE7WluXzh7j280DbIH3zvKOMz8wRDiq+/eJ6/eOIMd+yp4IOHt6XaTNvyuzfVcbi2mD969Dg/eqMbpRS+iVk+/q0WTvaM87/ft5+yPGfPFJYostLdfOX9BxidmufDX3+N80YOpRfbBvmdfzlCVWE2f/buvSm20rykJeE3qoDoTvXdwGGgBBhVSgWillclwR5H8f5rtzE2Pc+XnjjLM2f78WSmMeif4+ZdZXz5/Qd0NTqBpLtdPPThZj7+cAuf/v4x/uLxs0wY4vw391zFbXv0SNtEsreqgIc+fJBPfOcNbv5/f0lFfha9YzPUluby7Y8eIl+n116RNYVBRH4OLPcEf04p9eP4m7SiHQ8ADwBs26a93I3wwI11vKWulB++0c3ETICbd5Vxx54K3T01CRRkp/NvHz/MY8cu82L7IEU5GXzg8DbqvJ5Um+YI3tbg5alP3cj3j3RzftDPVdWFfODwNj3Cfw3WFAal1C0x/kYPED2kttpYNgQUikiaUWuILF/JjoeAhwCam5s3l1faweytKmBvVUGqzXAkaW4X77mmmvdco8cqpILKgmz+4JaGVJthKZLRXfUI0GD0QMoA7gUeU+HcxM8C9xjb3Q8krQai0Wg0muWJtbvqb4lIN3A98FMRecpYvkVEHgcwagOfBJ4CzgDfV0qdMg7xGeDTItJOuM3h67HYo9FoNJrYkc1OhZdKmpubVUtLS6rN0Gg0GkshIq8rpVYccxZBj3zWaDQazSK0MGg0Go1mEVoYNBqNRrMILQwajUajWYQWBo1Go9EswpK9kkTEB6xviqxfpxQYjKM5VkCfszPQ5+wMYjnnGqWUd62NLCkMsSAiLevprmUn9Dk7A33OziAZ56xDSRqNRqNZhBYGjUaj0SzCicLwUKoNSAH6nJ2BPmdnkPBzdlwbg0aj0WhWx4k1Bo1Go9GsgqOEQUTuEJFWEWkXkQdTbU88EJGtIvKsiJwWkVMi8gfG8mIReVpE2oy/RcZyEZG/M67BcRG5JrVnsHlExC0ib4rIT4zvtSLyqnFujxhp3hGRTON7u7F+eyrt3iwiUigij4rIWRE5IyLX2/0+i8injOf6pIh8V0Sy7HafReQbIjIgIiejlm34vorI/cb2bSJyfyw2OUYYRMQNfBW4E2gC7hORptRaFRcCwP+jlGoCrgM+YZzXg8AzSqkG4BnjO4TPv8H4PAD8Q/JNjht/QDiVe5m3cPoAAAMvSURBVIS/Ar6slKoHRoCPGss/CowYy79sbGdF/hZ4Uim1C9hP+Nxte59FpAr4faBZKbUXcBOez8Vu9/lfgDuWLNvQfRWRYuDzhKdNPgR8PiImm0Ip5YgP4Tkjnor6/lngs6m2KwHn+WPgVqAVqDSWVQKtxv//BNwXtf3Cdlb6EJ7x7xngZuAngBAe9JO29H4TngvkeuP/NGM7SfU5bPB8C4DzS+22833mynzxxcZ9+wlwux3vM7AdOLnZ+wrcB/xT1PJF223045gaA1cesgjdxjLbYFSdrwZeBcqVUr3Gqj6g3PjfLtfhK8AfASHjewkwqsITQ8Hi81o4Z2P9mLG9lagFfMA3jfDZ10QkFxvfZ6VUD/C/gUtAL+H79jr2vs8RNnpf43q/nSQMtkZEPMAPgf+plBqPXqfCLoRtup+JyG8CA0qp11NtSxJJA64B/kEpdTUwyZXwAmDL+1wE3E1YFLcAufx6yMX2pOK+OkkYeoCtUd+rjWWWR0TSCYvCd5RSPzIW94tIpbG+EhgwltvhOtwA3CUiF4DvEQ4n/S1QKCJpxjbR57Vwzsb6AmAomQbHgW6gWyn1qvH9UcJCYef7fAtwXinlU0rNAz8ifO/tfJ8jbPS+xvV+O0kYjgANRo+GDMKNWI+l2KaYEREhPFf2GaXU/4la9RgQ6ZlwP+G2h8jyDxu9G64DxqKqrJZAKfVZpVS1Umo74fv4C6XUB4FngXuMzZaec+Ra3GNsbynPWinVB3SJyE5j0TuB09j4PhMOIV0nIjnGcx45Z9ve5yg2el+fAm4TkSKjpnWbsWxzpLrRJckNPO8CzgEdwOdSbU+czumthKuZx4GjxuddhGOrzwBtwM+BYmN7Idw7qwM4QbjHR8rPI4bzvwn4ifH/DuA1oB34AZBpLM8yvrcb63ek2u5NnusBoMW41/8BFNn9PgN/CpwFTgLfBjLtdp+B7xJuQ5knXDP86GbuK/A7xrm3A/8tFpv0yGeNRqPRLMJJoSSNRqPRrAMtDBqNRqNZhBYGjUaj0SxCC4NGo9FoFqGFQaPRaDSL0MKg0Wg0mkVoYdBoNBrNIrQwaDQajWYR/z/zkp468ocmPwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# generate 100 points \n",
    "nsample = 1000\n",
    "\n",
    "## simulate a simple sinusoidal function\n",
    "x1 = np.linspace(0, 10, nsample)\n",
    "y = pd.Series(1*np.sin(2.0 * x1 + .5))\n",
    "y.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(-1165435925234116.2, 0.0, 22, 977, {'1%': -3.43706091543889, '5%': -2.8645028204932483, '10%': -2.568347558984588}, -69530.28425435597)\n",
      "\n",
      "p-value: 0.000000\n"
     ]
    }
   ],
   "source": [
    "print(adf(y))\n",
    "print('\\np-value: {:0.6f}'.format(p_val(y)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The results indicate that the series is stationary*\n",
    "\n",
    "## 5.2 b: Shift every observation by the same positive value. Compute the cumulative sum of the observations. This is a non-stationary series with memory\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fa63f0280f0>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "c_constant = 1.\n",
    "y_shifted = (y + c_constant).cumsum().rename('Shifted_series').to_frame()\n",
    "y_shifted.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(9.077169159527749, 1.0, 15, 984, {'1%': -3.437013049776705, '5%': -2.864481711583566, '10%': -2.5683363157264196}, -57975.66656262879)\n",
      "\n",
      "p-value: 1.000000\n"
     ]
    }
   ],
   "source": [
    "print(adf(y_shifted['Shifted_series']))\n",
    "print('\\np-value: {:0.6f}'.format(p_val(y_shifted['Shifted_series'])))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.2.ii Apply an expanding window fracDiff, with tau=1e-2. What is the minimum *d* value do you get a p-value below 5%?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "fd_series = fracdiff.frac_diff(y_shifted, 0.245)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "p-value: 0.000000\n"
     ]
    }
   ],
   "source": [
    "adf(fd_series['Shifted_series'].dropna())\n",
    "print('\\np-value: {:0.6f}'.format(p_val(fd_series['Shifted_series'].dropna())))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The minimum value of d is 0.245*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.2.iii Apply FFD, with tau=1e-5. What is the minimum *d* value do you get a p-value below 5%?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "fd_series = fracdiff.frac_diff_ffd(y_shifted, 0.999999998999)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "p-value: 0.958529\n"
     ]
    }
   ],
   "source": [
    "adf(fd_series['Shifted_series'].dropna())\n",
    "print('\\np-value: {:0.6f}'.format(p_val(fd_series['Shifted_series'].dropna())))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The minimum value of d is 0.999999998999*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.3 Take the series from exercise 5.2.b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## (a) Fit the series to a sine function. What is the R-squared?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fa63f003c50>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# take the series from 5.2.b - which is teh cumulative series (y_shifted)\n",
    "y_shifted.plot(figsize=(10,8))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7fa63ef4dda0>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_data = x1\n",
    "y_data = y_shifted['Shifted_series'].values\n",
    "plt.figure(figsize=(10, 8))\n",
    "plt.scatter(x_data, y_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Taken from: https://stackoverflow.com/questions/16716302/how-do-i-fit-a-sine-curve-to-my-data-with-pylab-and-numpy/42322656"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit_sin(tt, yy):\n",
    "    ''' Fit sin to the input time sequence, and return fitting parameters \n",
    "    \"amp\", \"omega\", \"phase\", \"offset\", \"freq\", \"period\" and \"fitfunc\"\n",
    "    '''\n",
    "    tt = np.array(tt)\n",
    "    yy = np.array(yy)\n",
    "    ff = np.fft.fftfreq(len(tt), (tt[1]-tt[0]))   # assume uniform spacing\n",
    "    Fyy = abs(np.fft.fft(yy))\n",
    "    guess_freq = abs(ff[np.argmax(Fyy[1:])+1])   # excluding the zero frequency \"peak\", which is related to offset\n",
    "    guess_amp = np.std(yy) * 2.**0.5\n",
    "    guess_offset = np.mean(yy)\n",
    "    guess = np.array([guess_amp, 2.*np.pi*guess_freq, 0., guess_offset])\n",
    "\n",
    "    def sinfunc(t, A, w, p, c):  return A * np.sin(w*t + p) + c\n",
    "    \n",
    "    popt, pcov = curve_fit(sinfunc, tt, yy, p0=guess)\n",
    "    A, w, p, c = popt\n",
    "    f = w/(2.*np.pi)\n",
    "    fitfunc = lambda t: A * np.sin(w*t + p) + c\n",
    "    \n",
    "    return {\"amp\": A, \"omega\": w, \"phase\": p, \"offset\": c, \"freq\": f, \"period\": 1./f, \n",
    "            \"fitfunc\": fitfunc, \"maxcov\": np.max(pcov), \"rawres\": (guess,popt,pcov)}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "res = fit_sin(x_data, y_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Amplitude=-848.3144837549798, Angular freq.=0.12009541980238901, phase=2.6318498303021824, \n",
      "offset=470.9669980821785, Max. Cov.=8525.818522429785\n"
     ]
    },
    {
     "data": {
      "image/png": "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IiIi16cuyFyib9++/Pjjj/z5z39mxowZN19mKCkJWrWCqCgnfLVs6Qy0V/gSERFxnVrAcoHFixcza9YsChQoQHx8PAULFrzxAatXO8Hr6FEIDYXJk6FDB431EhER8RFqAfNxBw4coHv37gBMmDCBatWqXf/DqanOOo4NGjjh68knYds26NhR4UtERMSHKID5sIyMDNq1a8e5c+eIiIigR48e1//wli3Ok42TJkFgoDOb/XffwUMPea9gERERuSXqgvRho0ePZv369ZQqVer6474yM2HcOBg+3JlqolIlWLAAatb0fsEiIiJySxTAfNS6det46623MMYwf/58ihUr9scP/fyzM6P9+vXOdt++MHYshIR4t1gRERG5LQpgPujMmTO0bduWrKwsBg0axF//+tfff8BamDMH+vVznnC8/36YPRsaNnSlXhEREbk9CmA+qFevXhw6dIjatWszatSo37958iR07w6ffupst2wJsbFwqzPii4iIiOsUwHzM4sWL+eijj7j33ntZuHAhQUFB/3lz5Uro3Bl+/RXCwpzpJdq10xOOIiIiuYyegvQhx48fp1evXoCz1NBDvz3BePEi9OwJTZo44atuXWdS1fbtFb5ERERyIQUwH2GtpVu3biQlJdGgQQOio6OdNzZuhBo1YOpUCApynnhcswYeeMDdgkVEROSOqQvSR8yZM4cVK1ZQqFAhZs6cicnMdObyeustZ6qJqlWd6SXCw90uVURERHJIAcwHHDx4kJiYGAAmT55MmdRU+MtfYMMG5wOvveaEsQIFXKxSREREPEUBzGVZWVl07tyZ5ORkXmrWjLYXLsCjj0JKCpQt60w3cfU0FCIiIpKraQyYy2JjY/n666+pUrgwi5KTMT17OuGrbVtnoL3Cl4iISJ6jAOaiffv28eabb/IKsCU9nfxr1kDhwrBokTPe67773C5RRERE7gJ1QbokMzOTvm3aMDs1lVfAmdH+hRdgxgwoVcrt8kREROQuUgBzyadduzJ70ybuB2xoKGbCBOjaVfN6iYiI+AEFMG87f56kTp1osWQJAElVq1Jk2TIoX97lwkRERMRbNAbMm779Flu9OkWWLOH/AfF16lBk2zaFLxERET+jAOYNqanOXF716mEOHmQzEFG6NI1WrYKAALerExERES9TF+TdtmkTdOgAu3djAwJ4KyuL0dayOi6OggULul2diIiIuEAtYHdLejqMGAF16sDu3WRVrEhk2bKMsJY+/ftTt25dtysUERERl6gF7G7YudNp9dqyxXmqsX9/hmRm8smkSVSsWJExY8a4XaGIiIi4SAHMkzIz4b334O9/h7Q0KFcO5sxhbb58jKtbl4CAAObOnUtISIjblYqIiIiLFMA8JTERoqJg7Vpnu2tXmDCBC8YQFR6OtZbBgwdTu3ZtV8sUERER9ymA5ZS1MH06vP46XLwI//Vfzmz2TZoAMKBXLxITEwkPD2fYsGEuFysiIiK+QAEsJw4edFq6vvrK2Y6MhA8+gKJFAVi1ahWxsbEEBQUxb948goODXSxWREREfIWegrwT1sKHH0K1ak74KloUFi92vrLD15kzZ+jcuTMAo0aNonr16m5WLCIiIj5ELWC36/Bhp9Vr1Spn++WXnVavEiV+97F+/frxyy+/UKdOHd544w0XChURERFfpRawW2UtzJwJVas64atIEVi0COLj/xC+lixZwoIFCwgJCWHevHkEBirnioiIyH8oGdyKI0egWzf44gtnu1kziI11Btxf5ddff6V79+4AjBs3jgoVKnizUhEREckF1AJ2I9bC7NlOq9cXX0DhwhAXB0uWXDN8WWvp3r07p06don79+vTq1cuFokVERMTXqQXsen75BaKjYeVKZ/tvf4OpU+H++697yLx581i2bBlhYWHMnj2bfPmUb0VEROSPlBCuZi3MnQtVqjjh6777YP58WLr0huHr0KFD9OvXD4BJkyZRtmxZb1UsIiIiuYxawK509Ch07w4rVjjbTZvCtGlQqtQND8vKyqJz586cP3+eiIgIOnTo4IViRUREJLdSCxg4rV7z5zutXitWQKFCTivY8uU3DV8AsbGxrFmzhmLFijFt2jSMMV4oWkRERHIrtYAdP+60ei1f7mw3buwsLVS69C0dvmfPHt58800Apk6dSsmSJe9WpSIiIpJH+HcL2GefOa1ey5dDWJjzxOOKFbccvi5dukSbNm1ITU2lffv2vPzyy3e5YBEREckL/LsFrHBhOHMGGjVylhYqU+a2Dh86dChbt27lwQcfZPLkyXepSBEREclr/DuA/eUv8H//B7Vrw22O21qzZg3jx48nICCAuLg4wsLC7lKRIiIiktf4dwADePzx2z7k9OnTl590HD58OE888YSnqxIREZE8zL/HgN0Bay3dunXj6NGjPPXUUwwZMsTtkkRERCSXUQC7TTNnzuTTTz8lLCyMBQsWaKFtERERuW0KYLdh9+7dxMTEAPDBBx9Qrlw5dwsSERGRXEkB7BZdvHiRli1bkpKSQrt27Wjbtq3bJYmIiEgupQB2i3r37s3OnTupWLEisbGxbpcjIiIiuZgC2C2YPXs2c+fOJSQkhPj4eEJDQ90uSURERHIxBbCb2LFjB7179waccV9Vq1Z1uSIRERHJ7RTAbiA5OZmWLVuSmppKVFQUUVFRbpckIiIieYAC2HX8Nt/X3r17qVKlClOmTHG7JBEREckjFMCuY/z48SxevJjQ0FDi4+O555573C5JRERE8ggFsGv44osvGDRoEADz58+nUqVKLlckIiIieYkC2FX2799P69atsdYyYsQImjVr5nZJIiIikscogF0hOTmZiIgIzp49S0REBMOHD3e7JBEREcmDFMCyZWZm0q5dO3bt2kWlSpWYN28e+fLpj0dEREQ8TwkD54nH/v37s3z5cgoXLsyyZcsICwtzuywRERHJo7wewIwxjYwxe40x+40xg7x9/WuZOHEi77//PsHBwSxdupQKFSq4XZKIiIjkYV4NYMaYAGAK8AJQGWhtjKnszRqu9umnn/Laa68BzpJDzzzzjJvliIiIiB/wdgtYbWC/tTbRWnsJ+AiI8HINl23YsIE2bdpgrWXMmDG0adPGrVJERETEj3g7gJUGDl+xfSR7nyuOHj2KtZYuXbowePBgt8oQERERPxPodgFXM8ZEA9EAf/rTn+7qtV566SU2bNhA5cqVMcbc1WuJiIiI/MbbLWC/AGWv2C6Tve8ya+10a+1j1trHihcvftcLCg8PJygo6K5fR0REROQ33g5gCUAFY8yDxphgoBWw3Ms1iIiIiLjKq12Q1toMY0wf4EsgAJhlrd3pzRpERERE3Ob1MWDW2pXASm9fV0RERMRXaCZ8ERERES9TABMRERHxMgUwERERES9TABMRERHxMgUwERERES9TABMRERHxMgUwERERES9TABMRERHxMgUwERERES9TABMRERHxMgUwERERES9TABMRERHxMgUwERERES9TABMRERHxMmOtdbuG6zLGnAQOeuFSxYBTXriO3DrdE9+k++J7dE98k+6L7/HGPXnAWlv8Vj7o0wHMW4wxm6y1j7ldh/yH7olv0n3xPbonvkn3xff42j1RF6SIiIiIlymAiYiIiHiZAphjutsFyB/onvgm3Rffo3vim3RffI9P3RONARMRERHxMrWAiYiIiHiZApiIiIiIl/l1ADPGNDLG7DXG7DfGDHK7HgFjTFljzDfGmF3GmJ3GmBi3axKHMSbAGLPVGLPC7VrEYYy5zxjziTFmjzFmtzHmCbdr8nfGmP7Zf3f9aIxZZIwp4HZN/sgYM8sYc8IY8+MV+4oYY1YbY/Zlfy/sZo1+G8CMMQHAFOAFoDLQ2hhT2d2qBMgAXrfWVgbqAL11X3xGDLDb7SLkdyYCX1hrKwLh6P64yhhTGugHPGatrQoEAK3crcpvzQEaXbVvELDGWlsBWJO97Rq/DWBAbWC/tTbRWnsJ+AiIcLkmv2etPWat3ZL9OhnnF0ppd6sSY0wZoAkww+1axGGMKQQ8A8wEsNZestaedbcqAQKBEGNMIHAPcNTlevyStfY7IOmq3RHA3OzXc4FmXi3qKv4cwEoDh6/YPoJ+0fsUY0w5oAawwd1KBHgPGABkuV2IXPYgcBKYnd01PMMYc6/bRfkza+0vwP8Ch4BjwDlr7Sp3q5IrlLTWHst+fRwo6WYx/hzAxIcZY0KBfwKvWmvPu12PPzPGNAVOWGs3u12L/E4gUBOItdbWAC7icpeKv8seUxSBE45LAfcaY9q5W5Vci3Xm4HJ1Hi5/DmC/AGWv2C6TvU9cZowJwglfcdbaJW7XIzwF/M0YcwCnq/6vxpgF7pYkOK32R6y1v7UQf4ITyMQ9zwE/W2tPWmvTgSXAky7XJP/xqzHmfoDs7yfcLMafA1gCUMEY86AxJhhnoORyl2vye8YYgzOmZbe1doLb9QhYawdba8tYa8vh/H/ytbVW/6p3mbX2OHDYGPPn7F31gV0uliRO12MdY8w92X+X1UcPRviS5UDH7NcdgWUu1kKgmxd3k7U2wxjTB/gS50mVWdbanS6XJU5rS3tghzFmW/a+IdbalS7WJOKr+gJx2f+ITAQ6uVyPX7PWbjDGfAJswXmieys+tvyNvzDGLAKeBYoZY44AI4B/AB8bY7oAB4FI9yrUUkQiIiIiXufPXZAiIiIirlAAExEREfEyBTARERERL1MAExEREfEyBTARERERL1MAExEREfEyBTARERERL/v/QjzqN8ybKgQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print( \"Amplitude=%(amp)s, Angular freq.=%(omega)s, phase=%(phase)s, \\noffset=%(offset)s, Max. Cov.=%(maxcov)s\" % res )\n",
    "plt.figure(figsize=(10,8))\n",
    "plt.plot(x_data, y_data, \"-k\", label=\"y\", linewidth=2)\n",
    "plt.plot(x_data, res[\"fitfunc\"](x_data), \"r-\", label=\"y fit curve\", linewidth=2)\n",
    "plt.legend(loc=\"best\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "# linearly regress the computed values with those of the original values and extract the r-squared\n",
    "computed_y_values = res['fitfunc'](x_data)\n",
    "slope, intercept, r_val, _, _ = linregress(y_data, computed_y_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Slope: 0.986, intercept: 7.644, r-sq: 0.993\n"
     ]
    }
   ],
   "source": [
    "print('Slope: {:0.3f}, intercept: {:0.3f}, r-sq: {:0.3f}'.format(slope, intercept, r_val))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.3.b. Apply FFD(d=1). Fit the series to a sine function. What is the r-squared?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "fd_series = fracdiff.frac_diff_ffd(y_shifted, diff_amt=1.0).dropna()\n",
    "# fd_series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_data = fd_series.index\n",
    "y_data = fd_series['Shifted_series'].values\n",
    "res = fit_sin(x_data, y_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Amplitude=0.999999999999999, Angular freq.=0.02002002002002002, phase=0.49999999999999734, \n",
      "offset=0.9999999999999991, Max. Cov.=6.460741517008801e-30\n"
     ]
    },
    {
     "data": {
      "image/png": "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jQ4GqfR4kMYQIlpWfutb8K1vEQwE8Hs8rJStbBEl+XPmsGb7diA033Oq389UyzGJ8BrLd5MaYMqI98vMbWe9j9lezAJaxvi5rvKjH/2IOXPmcOutt7Jhwwa+853vAPDUU0+xb98+y9HFH6ndErZ4fD75/yes8fr9tkMQETCWla6twEylVCWhhOkW4GNn3GcD8ElgE3AT8JLWWiulNgC/U0r9J1ACzATeCFfwseinP/0pf/3rXykz7QzWr18PhJKu66+/nrlzzzyDMDGBQACfFFYKIYQQMe+8v8aZGq07geeB/cDjWuu9SqlvKKXWm7s9COQppQ4D/8LpAvq9wOPAPuA54HNa66EJR61UZP6cwz333MO99947/P7dd9/NfffdN+o+//zP/0xVVRXXXXcdP/zhD3n44Ye588472bhxIxs2bOCLX/wiixcv5siRI6M+r6GhgRtvvJFFixaxaNEiNm7cyLFjx5g/f/7wfb7//e/zNTMges2aNdx1110sX76cb37zm5SXlxM0xZfd3d1MmTKFwcFBjhw5wrp161i2bBmXXXYZB85SICyEEEKI6BjTEonW+lng2TNuu2fE233Ah9/lc78JfHMCMcaE2267jQ996EPcddddBINBHn30Ud54Y/Si3c9+9jOee+45Xn75ZfLz83n44YcBWL16NevXr+f666/nprN0vf785z/PFVdcwZNPPsnQ0BBdXV2cOnXqnPEMDAzgnPBf8W/BAAAHhklEQVTcsWMHr776KldeeSXPPPMM1157LUlJSdxxxx387Gc/Y+bMmWzZsoXPfvazvPTSS+H5ggghhBBiXOJzX+o8bS4ioaKigry8PHbu3ElDQwNLliwhLy8vLI/90ksv8cgjjwDg9XrJyso6b9J184hZXTfffDOPPfYYV155JY8++iif/exn6erqYuPGjXz4w6dz4f7+/rDEK4QQQojxi8+ky5Lbb7+dhx9+mPr6em677baIXsvn8w1vGQL0ndGhPT09ffjt9evX89WvfpXW1la2b9/OVVddRXd3N9nZ2ezatSuicQohhBBibORozjjceOONPPfcc2zdupVrrx3fRKOMjAw6OzvP+rG1a9dy//33AzA0NER7ezuFhYU0NjbS0tJCf38/zzzzzLs+9qRJk7j44ov5whe+wPXXX4/X6yUzM5PKykqeeOIJALTWvPnmm+OKWQgh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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "print( \"Amplitude=%(amp)s, Angular freq.=%(omega)s, phase=%(phase)s, \\noffset=%(offset)s, Max. Cov.=%(maxcov)s\" % res )\n",
    "plt.figure(figsize=(10,8))\n",
    "plt.plot(x_data, y_data, \"-k\", label=\"y\", linewidth=2)\n",
    "plt.plot(x_data, res[\"fitfunc\"](x_data), \"r-\", label=\"y fit curve\", linewidth=2)\n",
    "plt.legend(loc=\"best\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Slope: 1.000, intercept: 0.000, r-sq: 1.0000000000\n"
     ]
    }
   ],
   "source": [
    "# linearly regress the computed values with those of the original values and extract the r-squared\n",
    "computed_y_values = res['fitfunc'](x_data)\n",
    "slope, intercept, r_val, _, _ = linregress(y_data, computed_y_values)\n",
    "print('Slope: {:0.3f}, intercept: {:0.3f}, r-sq: {:0.10f}'.format(slope, intercept, r_val))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.3.c What value of *d* maximizes the r-squared of a sinusoidal fit on FFD(d)? why?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The r-squared is 1.00 (that is the maximum value). fracDiff_FFD with d=1 makes the series stationary (there is no trend and it is homoscadestic) and since there is no noise the curve fit is complete.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.4 Take the dollar bar series on E-mini S&P 500 futures. Using the code in Snippet 5.3, for some d in [0, 2], compute the fracDiff_FFD(fracDiff_FFD(series, d), -d). What do you get? Why?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Read in data\n",
    "data = pd.read_csv('../Sample-Data/dollar_bars.csv')\n",
    "data.index = pd.to_datetime(data['date_time'])\n",
    "data = data.drop('date_time', axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_series = data['close'].to_frame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = 1.5\n",
    "fd = fracdiff.frac_diff_ffd(fracdiff.frac_diff_ffd(data_series, d), -d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "close    24079\n",
       "dtype: int64"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fd.isna().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The result is that the series fd is all NaNs.  The reason is when d is negative it takes an almost infinite number of observations for the weights to be lower than the threshold. That in turn leads to all the elements of the \"seriesF\" in frac_diff_ffd to have a value of NaNs. See the example below.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.0165],\n",
       "       [-0.045 ],\n",
       "       [-0.9   ],\n",
       "       [ 1.    ]])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d = 0.9\n",
    "w = fracdiff.get_weights_ffd(d, 1e-2, 10)\n",
    "w"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.74749788],\n",
       "       [0.75589673],\n",
       "       [0.76546504],\n",
       "       [0.77655874],\n",
       "       [0.78972075],\n",
       "       [0.8058375 ],\n",
       "       [0.8265    ],\n",
       "       [0.855     ],\n",
       "       [0.9       ],\n",
       "       [1.        ]])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "w = fracdiff.get_weights_ffd(-d, 1e-2, 10)\n",
    "w"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.5 Take the dollar bar series on E-mini S&P 500 futures. \n",
    "\n",
    "## 5.5.a Form a new series as a cumulative sum of log prices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>cum_vol</th>\n",
       "      <th>cum_dollar</th>\n",
       "      <th>cum_ticks</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date_time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-01 23:00:23.723</th>\n",
       "      <td>2053.00</td>\n",
       "      <td>2056.75</td>\n",
       "      <td>2051.00</td>\n",
       "      <td>2056.75</td>\n",
       "      <td>34102</td>\n",
       "      <td>70001096.75</td>\n",
       "      <td>8478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 07:07:35.156</th>\n",
       "      <td>2056.75</td>\n",
       "      <td>2067.25</td>\n",
       "      <td>2056.25</td>\n",
       "      <td>2064.00</td>\n",
       "      <td>33968</td>\n",
       "      <td>70010061.25</td>\n",
       "      <td>14514</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 09:35:57.204</th>\n",
       "      <td>2064.00</td>\n",
       "      <td>2067.25</td>\n",
       "      <td>2058.75</td>\n",
       "      <td>2060.50</td>\n",
       "      <td>33972</td>\n",
       "      <td>70087834.25</td>\n",
       "      <td>16152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 12:59:42.176</th>\n",
       "      <td>2060.50</td>\n",
       "      <td>2062.00</td>\n",
       "      <td>2057.75</td>\n",
       "      <td>2061.00</td>\n",
       "      <td>33985</td>\n",
       "      <td>70006169.75</td>\n",
       "      <td>15502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 14:19:33.847</th>\n",
       "      <td>2061.00</td>\n",
       "      <td>2064.25</td>\n",
       "      <td>2058.75</td>\n",
       "      <td>2063.75</td>\n",
       "      <td>33958</td>\n",
       "      <td>70000723.25</td>\n",
       "      <td>12332</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                            open     high      low    close  cum_vol  \\\n",
       "date_time                                                              \n",
       "2015-01-01 23:00:23.723  2053.00  2056.75  2051.00  2056.75    34102   \n",
       "2015-01-02 07:07:35.156  2056.75  2067.25  2056.25  2064.00    33968   \n",
       "2015-01-02 09:35:57.204  2064.00  2067.25  2058.75  2060.50    33972   \n",
       "2015-01-02 12:59:42.176  2060.50  2062.00  2057.75  2061.00    33985   \n",
       "2015-01-02 14:19:33.847  2061.00  2064.25  2058.75  2063.75    33958   \n",
       "\n",
       "                          cum_dollar  cum_ticks  \n",
       "date_time                                        \n",
       "2015-01-01 23:00:23.723  70001096.75       8478  \n",
       "2015-01-02 07:07:35.156  70010061.25      14514  \n",
       "2015-01-02 09:35:57.204  70087834.25      16152  \n",
       "2015-01-02 12:59:42.176  70006169.75      15502  \n",
       "2015-01-02 14:19:33.847  70000723.25      12332  "
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Read in data\n",
    "data = pd.read_csv('../Sample-Data/dollar_bars.csv')\n",
    "data.index = pd.to_datetime(data['date_time'])\n",
    "data = data.drop('date_time', axis=1)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# get the close prices\n",
    "data_series = data['close'].to_frame()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# form the cumulative sum of the log prices\n",
    "log_prices = np.log(data_series).cumsum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.5.b Apply FFD, with tau = 1e-5. Determine for what d in [0, 2] the series is stationary"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = 1.999999979\n",
    "fd_series = fracdiff.frac_diff_ffd(log_prices, diff_amt=d, thresh=1e-5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7.656261442753235e-11"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p_val(fd_series['close'].dropna())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Using plot_min_ffd function implemented in MlFinLab"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_min_ffd(data_series)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.5.c Compute the correlation of fracdiff series to the original (untransformed) series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cumsum</th>\n",
       "      <th>fdseries</th>\n",
       "      <th>original</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>cumsum</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.376159</td>\n",
       "      <td>0.406330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>fdseries</th>\n",
       "      <td>-0.376159</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.138135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>original</th>\n",
       "      <td>0.406330</td>\n",
       "      <td>-0.138135</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            cumsum  fdseries  original\n",
       "cumsum    1.000000 -0.376159  0.406330\n",
       "fdseries -0.376159  1.000000 -0.138135\n",
       "original  0.406330 -0.138135  1.000000"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "comb_df = log_prices.copy().rename(columns={'close':'cumsum'})\n",
    "comb_df = comb_df.join(fd_series.rename(columns={'close':'fdseries'})).dropna()\n",
    "comb_df = comb_df.join(data_series.rename(columns={'close':'original'})).dropna()\n",
    "comb_df.head()\n",
    "comb_df.corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.5.d Apply an Engle-Granger cointegration test on the original and the fracdiff series. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "comb_df['original'].plot()\n",
    "ax = comb_df['fdseries'].plot(secondary_y=True, color='r')\n",
    "ax.set_ylabel('FD Series')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "cl_prices = comb_df['original'].ravel()\n",
    "fd_prices = comb_df['fdseries'].ravel()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "res = coint(cl_prices, fd_prices, autolag='AIC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "P-value: 0.437113\n"
     ]
    }
   ],
   "source": [
    "print('P-value: {:.6f}'.format(res[1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The p-value is below the critical value of 0.05, so we can reject the NULL that there is no cointegration.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.5.e Apply a Jarque-Bera normality test on the fracdiff series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "P-value: 0.000000\n"
     ]
    }
   ],
   "source": [
    "jb_test = jarque_bera(fd_prices)\n",
    "print('P-value: {:.6f}'.format(jb_test[1]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "*The p-value is below 0.05 critical value, so we can reject the NULL hypothesis \n",
    "that data has skewness and kurtosis matching normal distribution.  This shows that \n",
    "the underlying distribution of fd_prices is not Gaussian.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 5.6 Take the the fracDiff series from 5.5 \n",
    "\n",
    "## 5.6.a Apply a CUSUM filter (Chapter 2), where h is twice the standard deviation of the series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>close</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date_time</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-01 23:00:23.723</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 07:07:35.156</th>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 09:35:57.204</th>\n",
       "      <td>-0.001697</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 12:59:42.176</th>\n",
       "      <td>0.000243</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 14:19:33.847</th>\n",
       "      <td>0.001333</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                            close\n",
       "date_time                        \n",
       "2015-01-01 23:00:23.723       NaN\n",
       "2015-01-02 07:07:35.156       NaN\n",
       "2015-01-02 09:35:57.204 -0.001697\n",
       "2015-01-02 12:59:42.176  0.000243\n",
       "2015-01-02 14:19:33.847  0.001333"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# we repeat the steps of 5.5 to get the fracDiff series\n",
    "# Read in data\n",
    "data = pd.read_csv('../Sample-Data/dollar_bars.csv')\n",
    "data.index = pd.to_datetime(data['date_time'])\n",
    "data = data.drop('date_time', axis=1)\n",
    "\n",
    "# get the close prices\n",
    "data_series = data['close'].to_frame()\n",
    "\n",
    "# form the cumulative sum of the log prices\n",
    "log_prices = np.log(data_series).cumsum()\n",
    "\n",
    "# Compute the fracDiff_FFD\n",
    "d = 2.0\n",
    "fd_series = fracdiff.frac_diff_ffd(log_prices, diff_amt=d, thresh=1e-5)\n",
    "fd_series.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Volatility: 0.0014\n"
     ]
    }
   ],
   "source": [
    "# compute volatility\n",
    "vol = fd_series.std()\n",
    "print('Volatility: {:0.4f}'.format(vol[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/media/ashu/data/Documents/WQU/Post-course/code/mlfinlab/mlfinlab/filters/filters.py:47: RuntimeWarning: divide by zero encountered in log\n",
      "  diff = np.log(raw_time_series).diff()\n",
      "/media/ashu/data/Documents/WQU/Post-course/code/mlfinlab/mlfinlab/filters/filters.py:47: RuntimeWarning: invalid value encountered in log\n",
      "  diff = np.log(raw_time_series).diff()\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2015-01-02 14:19:33.847000', '2015-01-02 14:33:39.311000',\n",
       "               '2015-01-02 14:42:28.315000', '2015-01-02 15:57:26.907000',\n",
       "               '2015-01-02 16:30:52.544000', '2015-01-02 17:11:07.124000',\n",
       "               '2015-01-02 19:08:52.976000', '2015-01-02 19:29:46.490000',\n",
       "               '2015-01-02 19:48:25.876000', '2015-01-02 20:47:02.488000',\n",
       "               ...\n",
       "               '2016-12-29 21:13:14.022000', '2016-12-30 04:04:24.654000',\n",
       "               '2016-12-30 10:05:16.607000', '2016-12-30 13:51:30.230000',\n",
       "               '2016-12-30 16:28:16.806000', '2016-12-30 16:53:48.389000',\n",
       "               '2016-12-30 20:57:19.151000', '2016-12-30 20:58:34.724000',\n",
       "               '2016-12-30 20:59:16.663000', '2016-12-30 20:59:34.157000'],\n",
       "              dtype='datetime64[ns]', length=6438, freq=None)"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# apply cusum filter\n",
    "cusum_events = filters.cusum_filter(fd_series.dropna(), threshold=vol[0]*2.)\n",
    "cusum_events"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.6.b Use the filtered timestamps to sample a features' matrix. Use as one of the features the fracDiff value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "def relative_strength_index(df, n):\n",
    "    \"\"\" Calculate Relative Strength Index(RSI) for given data.\n",
    "    https://github.com/Crypto-toolbox/pandas-technical-indicators/blob/master/technical_indicators.py\n",
    "\n",
    "    :param df: pandas.DataFrame\n",
    "    :param n: \n",
    "    :return: pandas.DataFrame\n",
    "    \"\"\"\n",
    "    i = 0\n",
    "    UpI = [0]\n",
    "    DoI = [0]\n",
    "    while i + 1 <= df.index[-1]:\n",
    "        UpMove = df.loc[i + 1, 'high'] - df.loc[i, 'high']\n",
    "        DoMove = df.loc[i, 'low'] - df.loc[i + 1, 'low']\n",
    "        if UpMove > DoMove and UpMove > 0:\n",
    "            UpD = UpMove\n",
    "        else:\n",
    "            UpD = 0\n",
    "        UpI.append(UpD)\n",
    "        if DoMove > UpMove and DoMove > 0:\n",
    "            DoD = DoMove\n",
    "        else:\n",
    "            DoD = 0\n",
    "        DoI.append(DoD)\n",
    "        i = i + 1\n",
    "    UpI = pd.Series(UpI)\n",
    "    DoI = pd.Series(DoI)\n",
    "    PosDI = pd.Series(UpI.ewm(span=n, min_periods=n).mean())\n",
    "    NegDI = pd.Series(DoI.ewm(span=n, min_periods=n).mean())\n",
    "    RSI = pd.Series(round(PosDI * 100. / (PosDI + NegDI)), name='RSI_' + str(n))\n",
    "    # df = df.join(RSI)\n",
    "    return RSI\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Compute RSI\n",
    "def get_rsi(data, window=14):\n",
    "    df = data.copy(deep=True).reset_index()\n",
    "    rsi = relative_strength_index(df, window)\n",
    "    rsi_df = pd.Series(data=rsi.values, index=data.index)\n",
    "    return rsi_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [],
   "source": [
    "rsi_df = get_rsi(data, window=14)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "      <th>cum_vol</th>\n",
       "      <th>cum_dollar</th>\n",
       "      <th>cum_ticks</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>date_time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-01 23:00:23.723</th>\n",
       "      <td>2053.00</td>\n",
       "      <td>2056.75</td>\n",
       "      <td>2051.00</td>\n",
       "      <td>2056.75</td>\n",
       "      <td>34102</td>\n",
       "      <td>70001096.75</td>\n",
       "      <td>8478</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 07:07:35.156</th>\n",
       "      <td>2056.75</td>\n",
       "      <td>2067.25</td>\n",
       "      <td>2056.25</td>\n",
       "      <td>2064.00</td>\n",
       "      <td>33968</td>\n",
       "      <td>70010061.25</td>\n",
       "      <td>14514</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 09:35:57.204</th>\n",
       "      <td>2064.00</td>\n",
       "      <td>2067.25</td>\n",
       "      <td>2058.75</td>\n",
       "      <td>2060.50</td>\n",
       "      <td>33972</td>\n",
       "      <td>70087834.25</td>\n",
       "      <td>16152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 12:59:42.176</th>\n",
       "      <td>2060.50</td>\n",
       "      <td>2062.00</td>\n",
       "      <td>2057.75</td>\n",
       "      <td>2061.00</td>\n",
       "      <td>33985</td>\n",
       "      <td>70006169.75</td>\n",
       "      <td>15502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 14:19:33.847</th>\n",
       "      <td>2061.00</td>\n",
       "      <td>2064.25</td>\n",
       "      <td>2058.75</td>\n",
       "      <td>2063.75</td>\n",
       "      <td>33958</td>\n",
       "      <td>70000723.25</td>\n",
       "      <td>12332</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                            open     high      low    close  cum_vol  \\\n",
       "date_time                                                              \n",
       "2015-01-01 23:00:23.723  2053.00  2056.75  2051.00  2056.75    34102   \n",
       "2015-01-02 07:07:35.156  2056.75  2067.25  2056.25  2064.00    33968   \n",
       "2015-01-02 09:35:57.204  2064.00  2067.25  2058.75  2060.50    33972   \n",
       "2015-01-02 12:59:42.176  2060.50  2062.00  2057.75  2061.00    33985   \n",
       "2015-01-02 14:19:33.847  2061.00  2064.25  2058.75  2063.75    33958   \n",
       "\n",
       "                          cum_dollar  cum_ticks  \n",
       "date_time                                        \n",
       "2015-01-01 23:00:23.723  70001096.75       8478  \n",
       "2015-01-02 07:07:35.156  70010061.25      14514  \n",
       "2015-01-02 09:35:57.204  70087834.25      16152  \n",
       "2015-01-02 12:59:42.176  70006169.75      15502  \n",
       "2015-01-02 14:19:33.847  70000723.25      12332  "
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rsi_df.head(20)\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>dollar_bars</th>\n",
       "      <th>frac_diff</th>\n",
       "      <th>rsi</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-02 15:57:26.907</th>\n",
       "      <td>2050.50</td>\n",
       "      <td>0.001098</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 16:30:52.544</th>\n",
       "      <td>2048.00</td>\n",
       "      <td>0.002322</td>\n",
       "      <td>35.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 17:11:07.124</th>\n",
       "      <td>2050.50</td>\n",
       "      <td>0.001953</td>\n",
       "      <td>52.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 19:08:52.976</th>\n",
       "      <td>2046.50</td>\n",
       "      <td>0.001956</td>\n",
       "      <td>44.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-02 19:29:46.490</th>\n",
       "      <td>2046.75</td>\n",
       "      <td>0.000122</td>\n",
       "      <td>53.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                         dollar_bars  frac_diff   rsi\n",
       "2015-01-02 15:57:26.907      2050.50   0.001098  31.0\n",
       "2015-01-02 16:30:52.544      2048.00   0.002322  35.0\n",
       "2015-01-02 17:11:07.124      2050.50   0.001953  52.0\n",
       "2015-01-02 19:08:52.976      2046.50   0.001956  44.0\n",
       "2015-01-02 19:29:46.490      2046.75   0.000122  53.0"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dol_bars_feature = data['close'].loc[cusum_events]\n",
    "frac_diff_feature = fd_series.loc[cusum_events]\n",
    "rsi_feature = rsi_df[cusum_events]\n",
    "\n",
    "features_mat = (pd.DataFrame()\n",
    "                .assign(dollar_bars=dol_bars_feature,\n",
    "                        frac_diff=frac_diff_feature,\n",
    "                        rsi=rsi_feature)\n",
    "                .drop_duplicates().dropna())\n",
    "\n",
    "features_mat.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.6.c Form labels using the triple-barrier method, with symmetric horizontal barriers of twice the daily standard deviation, and a vertical barrier of 5 days"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "# compute daily volatility\n",
    "daily_vol = utils.get_daily_vol(features_mat.dollar_bars)\n",
    "\n",
    "# compute vertical barriers\n",
    "# t1 = snp.addVerticalBarrier(tEvents, ftMtx.dbars, numDays=5)\n",
    "vertical_barriers = labeling.add_vertical_barrier(t_events=cusum_events, close=features_mat.dollar_bars, num_days=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/media/ashu/data/Documents/WQU/Post-course/code/mlfinlab/mlfinlab/labeling/labeling.py:122: FutureWarning: \n",
      "Passing list-likes to .loc or [] with any missing label will raise\n",
      "KeyError in the future, you can use .reindex() as an alternative.\n",
      "\n",
      "See the documentation here:\n",
      "https://pandas.pydata.org/pandas-docs/stable/indexing.html#deprecate-loc-reindex-listlike\n",
      "  target = target.loc[t_events]\n",
      "2019-07-13 14:23:53.800074 100.0% apply_pt_sl_on_t1 done after 0.1 minutes. Remaining 0.0 minutes.\n"
     ]
    }
   ],
   "source": [
    "# Triple barrier\n",
    "pt_sl = [2, 2]\n",
    "min_ret = 0.0005\n",
    "triple_barrier_events = labeling.get_events(close=features_mat.dollar_bars,\n",
    "                                  t_events=cusum_events,\n",
    "                                  pt_sl=pt_sl,\n",
    "                                  target=daily_vol,\n",
    "                                  min_ret=min_ret,\n",
    "                                  num_threads=2,\n",
    "                                  vertical_barrier_times=vertical_barriers)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>t1</th>\n",
       "      <th>trgt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-05 14:30:57.874</th>\n",
       "      <td>2015-01-05 16:49:40.508</td>\n",
       "      <td>0.001893</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 16:49:40.508</th>\n",
       "      <td>2015-01-06 16:59:34.232</td>\n",
       "      <td>0.005317</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 20:12:36.935</th>\n",
       "      <td>2015-01-08 14:54:32.974</td>\n",
       "      <td>0.006831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 20:24:35.205</th>\n",
       "      <td>2015-01-08 14:54:32.974</td>\n",
       "      <td>0.006781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 20:50:29.765</th>\n",
       "      <td>2015-01-08 14:54:32.974</td>\n",
       "      <td>0.006455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 20:55:15.175</th>\n",
       "      <td>2015-01-08 14:54:32.974</td>\n",
       "      <td>0.005993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 21:14:39.330</th>\n",
       "      <td>2015-01-08 12:23:50.674</td>\n",
       "      <td>0.005703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 12:05:40.394</th>\n",
       "      <td>2015-01-06 16:59:34.232</td>\n",
       "      <td>0.005415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 13:07:13.855</th>\n",
       "      <td>2015-01-06 16:59:34.232</td>\n",
       "      <td>0.005158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 14:34:45.441</th>\n",
       "      <td>2015-01-06 16:59:34.232</td>\n",
       "      <td>0.005059</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 15:13:19.811</th>\n",
       "      <td>2015-01-06 16:59:34.232</td>\n",
       "      <td>0.004881</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 15:16:04.445</th>\n",
       "      <td>2015-01-06 16:59:34.232</td>\n",
       "      <td>0.004874</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 15:22:16.841</th>\n",
       "      <td>2015-01-06 16:59:34.232</td>\n",
       "      <td>0.004885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 16:59:34.232</th>\n",
       "      <td>2015-01-07 15:02:09.044</td>\n",
       "      <td>0.004685</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 17:37:56.548</th>\n",
       "      <td>2015-01-07 14:55:27.024</td>\n",
       "      <td>0.004512</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 17:43:33.890</th>\n",
       "      <td>2015-01-07 14:55:27.024</td>\n",
       "      <td>0.004348</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 19:03:11.469</th>\n",
       "      <td>2015-01-07 14:55:27.024</td>\n",
       "      <td>0.004203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 19:32:17.786</th>\n",
       "      <td>2015-01-07 14:55:27.024</td>\n",
       "      <td>0.004063</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 19:42:28.990</th>\n",
       "      <td>2015-01-07 15:02:09.044</td>\n",
       "      <td>0.003938</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 19:48:26.783</th>\n",
       "      <td>2015-01-07 15:02:09.044</td>\n",
       "      <td>0.003862</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-06 19:53:58.683</th>\n",
       "      <td>2015-01-07 17:08:57.964</td>\n",
       "      <td>0.003851</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 01:30:12.783</th>\n",
       "      <td>2015-01-07 15:02:09.044</td>\n",
       "      <td>0.003885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 08:09:01.757</th>\n",
       "      <td>2015-01-07 15:02:09.044</td>\n",
       "      <td>0.003963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 12:09:28.649</th>\n",
       "      <td>2015-01-08 01:48:57.964</td>\n",
       "      <td>0.004121</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 13:06:58.746</th>\n",
       "      <td>2015-01-08 01:48:57.964</td>\n",
       "      <td>0.004303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 14:55:27.024</th>\n",
       "      <td>2015-01-08 01:48:57.964</td>\n",
       "      <td>0.004643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 15:02:09.044</th>\n",
       "      <td>2015-01-08 12:23:50.674</td>\n",
       "      <td>0.005065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 15:58:47.211</th>\n",
       "      <td>2015-01-08 01:48:57.964</td>\n",
       "      <td>0.005064</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 16:38:30.780</th>\n",
       "      <td>2015-01-08 01:48:57.964</td>\n",
       "      <td>0.005021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-07 16:49:46.974</th>\n",
       "      <td>2015-01-08 01:48:57.964</td>\n",
       "      <td>0.005032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-23 20:58:06.402</th>\n",
       "      <td>2016-12-28 21:02:02.922</td>\n",
       "      <td>0.004613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-23 21:00:00.150</th>\n",
       "      <td>2016-12-28 21:02:02.922</td>\n",
       "      <td>0.004569</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-23 21:14:59.074</th>\n",
       "      <td>2016-12-29 14:27:14.402</td>\n",
       "      <td>0.004524</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-27 13:10:04.437</th>\n",
       "      <td>2016-12-30 20:57:19.151</td>\n",
       "      <td>0.004480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-27 14:35:26.243</th>\n",
       "      <td>2016-12-29 17:57:22.632</td>\n",
       "      <td>0.004446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-27 14:46:18.339</th>\n",
       "      <td>2016-12-28 21:02:02.922</td>\n",
       "      <td>0.004419</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-27 14:52:13.193</th>\n",
       "      <td>2016-12-28 18:08:19.774</td>\n",
       "      <td>0.004403</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-27 15:08:13.395</th>\n",
       "      <td>2016-12-28 18:08:19.774</td>\n",
       "      <td>0.004388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-27 19:13:12.308</th>\n",
       "      <td>2016-12-29 17:57:22.632</td>\n",
       "      <td>0.004356</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-28 14:30:06.192</th>\n",
       "      <td>2016-12-28 21:02:02.922</td>\n",
       "      <td>0.004323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-28 15:32:58.075</th>\n",
       "      <td>2016-12-30 20:57:19.151</td>\n",
       "      <td>0.004358</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-28 18:08:19.774</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004505</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-28 21:02:02.922</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-29 14:27:14.402</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-29 14:33:22.974</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004823</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-29 14:40:38.841</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004879</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-29 17:57:22.632</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-29 20:16:15.092</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004840</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-29 20:59:51.945</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004794</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-29 21:00:00.349</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004749</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-29 21:13:14.022</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004702</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 04:04:24.654</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004662</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 10:05:16.607</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004627</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 13:51:30.230</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 16:28:16.806</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004567</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 16:53:48.389</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 20:57:19.151</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004527</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 20:58:34.724</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004507</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 20:59:16.663</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2016-12-30 20:59:34.157</th>\n",
       "      <td>NaT</td>\n",
       "      <td>0.004451</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>6413 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             t1      trgt\n",
       "2015-01-05 14:30:57.874 2015-01-05 16:49:40.508  0.001893\n",
       "2015-01-05 16:49:40.508 2015-01-06 16:59:34.232  0.005317\n",
       "2015-01-05 20:12:36.935 2015-01-08 14:54:32.974  0.006831\n",
       "2015-01-05 20:24:35.205 2015-01-08 14:54:32.974  0.006781\n",
       "2015-01-05 20:50:29.765 2015-01-08 14:54:32.974  0.006455\n",
       "2015-01-05 20:55:15.175 2015-01-08 14:54:32.974  0.005993\n",
       "2015-01-05 21:14:39.330 2015-01-08 12:23:50.674  0.005703\n",
       "2015-01-06 12:05:40.394 2015-01-06 16:59:34.232  0.005415\n",
       "2015-01-06 13:07:13.855 2015-01-06 16:59:34.232  0.005158\n",
       "2015-01-06 14:34:45.441 2015-01-06 16:59:34.232  0.005059\n",
       "2015-01-06 15:13:19.811 2015-01-06 16:59:34.232  0.004881\n",
       "2015-01-06 15:16:04.445 2015-01-06 16:59:34.232  0.004874\n",
       "2015-01-06 15:22:16.841 2015-01-06 16:59:34.232  0.004885\n",
       "2015-01-06 16:59:34.232 2015-01-07 15:02:09.044  0.004685\n",
       "2015-01-06 17:37:56.548 2015-01-07 14:55:27.024  0.004512\n",
       "2015-01-06 17:43:33.890 2015-01-07 14:55:27.024  0.004348\n",
       "2015-01-06 19:03:11.469 2015-01-07 14:55:27.024  0.004203\n",
       "2015-01-06 19:32:17.786 2015-01-07 14:55:27.024  0.004063\n",
       "2015-01-06 19:42:28.990 2015-01-07 15:02:09.044  0.003938\n",
       "2015-01-06 19:48:26.783 2015-01-07 15:02:09.044  0.003862\n",
       "2015-01-06 19:53:58.683 2015-01-07 17:08:57.964  0.003851\n",
       "2015-01-07 01:30:12.783 2015-01-07 15:02:09.044  0.003885\n",
       "2015-01-07 08:09:01.757 2015-01-07 15:02:09.044  0.003963\n",
       "2015-01-07 12:09:28.649 2015-01-08 01:48:57.964  0.004121\n",
       "2015-01-07 13:06:58.746 2015-01-08 01:48:57.964  0.004303\n",
       "2015-01-07 14:55:27.024 2015-01-08 01:48:57.964  0.004643\n",
       "2015-01-07 15:02:09.044 2015-01-08 12:23:50.674  0.005065\n",
       "2015-01-07 15:58:47.211 2015-01-08 01:48:57.964  0.005064\n",
       "2015-01-07 16:38:30.780 2015-01-08 01:48:57.964  0.005021\n",
       "2015-01-07 16:49:46.974 2015-01-08 01:48:57.964  0.005032\n",
       "...                                         ...       ...\n",
       "2016-12-23 20:58:06.402 2016-12-28 21:02:02.922  0.004613\n",
       "2016-12-23 21:00:00.150 2016-12-28 21:02:02.922  0.004569\n",
       "2016-12-23 21:14:59.074 2016-12-29 14:27:14.402  0.004524\n",
       "2016-12-27 13:10:04.437 2016-12-30 20:57:19.151  0.004480\n",
       "2016-12-27 14:35:26.243 2016-12-29 17:57:22.632  0.004446\n",
       "2016-12-27 14:46:18.339 2016-12-28 21:02:02.922  0.004419\n",
       "2016-12-27 14:52:13.193 2016-12-28 18:08:19.774  0.004403\n",
       "2016-12-27 15:08:13.395 2016-12-28 18:08:19.774  0.004388\n",
       "2016-12-27 19:13:12.308 2016-12-29 17:57:22.632  0.004356\n",
       "2016-12-28 14:30:06.192 2016-12-28 21:02:02.922  0.004323\n",
       "2016-12-28 15:32:58.075 2016-12-30 20:57:19.151  0.004358\n",
       "2016-12-28 18:08:19.774                     NaT  0.004505\n",
       "2016-12-28 21:02:02.922                     NaT  0.004626\n",
       "2016-12-29 14:27:14.402                     NaT  0.004736\n",
       "2016-12-29 14:33:22.974                     NaT  0.004823\n",
       "2016-12-29 14:40:38.841                     NaT  0.004879\n",
       "2016-12-29 17:57:22.632                     NaT  0.004885\n",
       "2016-12-29 20:16:15.092                     NaT  0.004840\n",
       "2016-12-29 20:59:51.945                     NaT  0.004794\n",
       "2016-12-29 21:00:00.349                     NaT  0.004749\n",
       "2016-12-29 21:13:14.022                     NaT  0.004702\n",
       "2016-12-30 04:04:24.654                     NaT  0.004662\n",
       "2016-12-30 10:05:16.607                     NaT  0.004627\n",
       "2016-12-30 13:51:30.230                     NaT  0.004593\n",
       "2016-12-30 16:28:16.806                     NaT  0.004567\n",
       "2016-12-30 16:53:48.389                     NaT  0.004534\n",
       "2016-12-30 20:57:19.151                     NaT  0.004527\n",
       "2016-12-30 20:58:34.724                     NaT  0.004507\n",
       "2016-12-30 20:59:16.663                     NaT  0.004481\n",
       "2016-12-30 20:59:34.157                     NaT  0.004451\n",
       "\n",
       "[6413 rows x 2 columns]"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "triple_barrier_events"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       " 0    2309\n",
       " 1    2233\n",
       "-1    1852\n",
       "Name: bin, dtype: int64"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# create labels\n",
    "labels = labeling.get_bins(triple_barrier_events, features_mat.dollar_bars)\n",
    "clean_labels = labeling.drop_labels(labels)\n",
    "clean_labels.bin.value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ret</th>\n",
       "      <th>trgt</th>\n",
       "      <th>bin</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2015-01-05 14:30:57.874</th>\n",
       "      <td>-0.007601</td>\n",
       "      <td>0.001893</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 16:49:40.508</th>\n",
       "      <td>-0.013465</td>\n",
       "      <td>0.005317</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 20:12:36.935</th>\n",
       "      <td>0.014397</td>\n",
       "      <td>0.006831</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 20:24:35.205</th>\n",
       "      <td>0.014020</td>\n",
       "      <td>0.006781</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2015-01-05 20:50:29.765</th>\n",
       "      <td>0.013643</td>\n",
       "      <td>0.006455</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                              ret      trgt  bin\n",
       "2015-01-05 14:30:57.874 -0.007601  0.001893   -1\n",
       "2015-01-05 16:49:40.508 -0.013465  0.005317   -1\n",
       "2015-01-05 20:12:36.935  0.014397  0.006831    1\n",
       "2015-01-05 20:24:35.205  0.014020  0.006781    1\n",
       "2015-01-05 20:50:29.765  0.013643  0.006455    1"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clean_labels.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
